Fluckysan Posté(e) 24 juillet 2009 Share Posté(e) 24 juillet 2009 Bonjour, le titre n'est pô très parlant je sais lol Je vous explique : j'aimerais ouvrir une Dialog par le biais d'un AlarmService, je parviens à le faire avec une Activity mais du coup c'est toute mon appli qui s'ouvre :s Or j'aimerais juste appeler une boîte de dialogue qui s'afficherait en premier plan (qu'on soit dans une appli ou simplement sur le bureau) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nico2804 Posté(e) 24 juillet 2009 Share Posté(e) 24 juillet 2009 Salut Fluckysan, C'est juste pour bien comprendre car de toute façon je vais surement avoir du mal à t'aider :D Ce que tu veux c'est que tu es une pop-up qui s'affiche sur le Home comme avec le réveil quand il sonne ?? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 24 juillet 2009 Auteur Share Posté(e) 24 juillet 2009 Vala exactement :D Je cherche ni plus, ni moins cette pop-up :o Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
VinS Posté(e) 24 juillet 2009 Share Posté(e) 24 juillet 2009 Tu pourrai mettre un screenshot de la pop-up que tu attends? Je ne vois vraiment pas c'est laquelle car je ne possède pas encore de Gphone. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nico2804 Posté(e) 24 juillet 2009 Share Posté(e) 24 juillet 2009 je pense que la pop-up du Réveil apparaît simplement par ce que l'appli Réveil tourne mais en tache de fond donc masquée. Je me dis ça parce que quand tu kill le Réveil, il ne sonne plus et donc la pop-up n'apparaît plus. Une piste à explorer : que ton appli tourne mais en tache de fond ou masqué pour que ta pop-up apparaisse. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 24 juillet 2009 Auteur Share Posté(e) 24 juillet 2009 Hum ça pourrait expliquer ce fonctionnement en effet :o Bonne remarque sur le fait de kill le réveil :) Par contre je ne souhaite pô que mon appli tourne en fond pour qu'elle ne prenne pô de ressource :/ @VinS : dsl mais je ne peux pô mettre de screen du réveil de là où je suis Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tama Chan Posté(e) 24 juillet 2009 Share Posté(e) 24 juillet 2009 un truc dans genre ? Builder builder = new AlertDialog.Builder(this); builder.setTitle("Coucou"); builder.setIcon(R.drawable.matete); builder.setMessage( "Salut les amis de Frandroid ! Ca va ?" ); builder.setPositiveButton("Ouaip!"), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { /* Ouaip */ // faire un truc } }); builder.setNegativeButton( "Non" ), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { /* Non */ // tant pis } }); builder.show(); Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 24 juillet 2009 Auteur Share Posté(e) 24 juillet 2009 Thx pour vos réponses :D Bon il faut que je refasse des tests avec les Dialogs en effet J'avais commencé avec une Dialog mais elle ne s'ouvrait pô, du coup j'ai fait avec une Activity Reste à savoir si la Dialog ne s'ouvrait pas parce qu'une Dialog doit être ouverte par une Activity (via showDialog) ou à cause de mon AlarmManager qui était mal setté (dans ce cas là oups :s) Le principe serait d'avoir le comportement du popup de l'alarme par défaut : il s'ouvre sans avoir besoin d'être dans l'appli alarme et je ne sais pô si c'est possible de faire un Intent sur une Dialog via l'AlarmManager (techniquement c'est possible mais s'ouvrira-t'elle ?) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tama Chan Posté(e) 24 juillet 2009 Share Posté(e) 24 juillet 2009 au fait dans mon code, à la place de (this) dans Builder builder = new AlertDialog.Builder(this); il faudrait utiliser GetBaseContext(). Tu créés un service et tu utilises l'AlarmManager avec un PendingIntent pour appeller ton service. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tama Chan Posté(e) 24 juillet 2009 Share Posté(e) 24 juillet 2009 Je te fais un exemple vite fait, mais il sera pas testé :D public class MonService extends Service { static final String TAG = "MonReveil"; @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onDestroy() { super.onDestroy(); Log.d(TAG, "Service destroyed"); } @Override public void onStart(Intent intent, int startId) { Log.d(TAG, "Service started"); Builder builder = new AlertDialog.Builder(GetBaseContext()); builder.setTitle("Coucou"); builder.setIcon(R.drawable.matete); builder.setMessage( "Salut les amis de Frandroid ! Ca va ?" ); builder.setPositiveButton("Ouaip!"), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { /* Ouaip */ // faire un truc } }); builder.setNegativeButton( "Non" ), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { /* Non */ // tant pis } }); builder.show(); // ne pas oublier de stopper son service une fois tout fini stopSelf(); } } ensuite pour utiliser l'AlarmManager: Time time = new Time(); // Par exemple demarre le service dans 60 Minutes time.set(System.currentTimeMillis() + 60 * DateUtils.MINUTE_IN_MILLIS); long nextStart = time.toMillis(false); Intent updateIntent = new Intent(ACTION_NEXT_RECORDING); updateIntent.setClass(getBaseContext(), MonService.class); PendingIntent pendingIntent = PendingIntent.getService(getBaseContext(), 0, updateIntent, 0); AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, nextStart, pendingIntent); Bon j'ai pas testé, mais ça devrait marcher. Le seul truc qui me fait peur, c'est qu'une boite de dialogue dans un service, ça risque de provoquer un ANR (Application Non Responding), mais peut etre que ça le fera pas car le Context sera celui de base. Enfin à voir, ça fait pas longtemps que je programme sous Android :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 25 juillet 2009 Auteur Share Posté(e) 25 juillet 2009 Merchi Tama Chan, bon exemple de passer par un service :D Je testerais dès que possible, j'apprécie qu'on se serre les coudes ici entre dévs ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
neoakira Posté(e) 26 juillet 2009 Share Posté(e) 26 juillet 2009 Dans ton AndroidManifest.xml, tu peux donner le style boite de dialog par defaut d'android à ton activity en ajoutant android:theme="@android:style/Theme.Dialog" dans la ligne , exemple : Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tama Chan Posté(e) 22 août 2009 Share Posté(e) 22 août 2009 FluckySan, tu as reussi ? Car je suis exactement dans le meme cas actuellement et le systeme du dialog dans le service ne fonctionne pas... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 22 août 2009 Share Posté(e) 22 août 2009 Ce n est pas posible. Les services doivent utiliser les notifications, pour eviter les popups intempestifs. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tama Chan Posté(e) 22 août 2009 Share Posté(e) 22 août 2009 J'ai une app avec un widget, je voudrais qu'une liste s'affiche, l'utilisateur fait son choix, et puis c'est tout, le widget interprete le choix. J'ai donc fait un listactivity, avec un theme Dialog, donc ce n'est pas en plein ecran. Mais le probleme c'est que des que j'affiche cette activity, ça charge mon autre activity principale, ensuite affiche la listactivity par dessus. Quand je termine ma listactivity, ça me renvoi sur mon activity principale alors que ça a rien à voir avec le reste. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 22 août 2009 Share Posté(e) 22 août 2009 ah ouais j'ai eut ça avec le widget taskiller.... il me chargait taskiller au lieu de faire un kill. c'est ton intent dans ton widget qui doit être mal foutue. normalement ton widget colle une intent sur l'image (pendingintent pour être précis). l'intent lance ta listactivity. Elle a bien la propriété MAIN ta listactivity ? et ce genre de prpriétés: android:launchMode="singleTask" ou android:launchMode="singleTop" et peut être ça Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tama Chan Posté(e) 22 août 2009 Share Posté(e) 22 août 2009 je n'avais pas le singleTask ou SIngleTop mais celà n'as pas aidé. Pourtant mon Intent est tout con: Intent detailIntent = new Intent(context, WidgetActivity.class); PendingIntent pending = PendingIntent.getActivity(context, 0, detailIntent,0); updateViews.setOnClickPendingIntent(R.id.Imagewidget_back, pending); Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tama Chan Posté(e) 24 août 2009 Share Posté(e) 24 août 2009 J'ai finalement trouvé, il faut aussi android:taskAffinity=":WidgetActivity" Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 24 août 2009 Share Posté(e) 24 août 2009 pinaise c est tordu ça :rolleyes: Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 25 août 2009 Auteur Share Posté(e) 25 août 2009 Hum vi il fallait trouver :o Et afficher une boîte de dialogue en passant par l'AlarmService, c'est possible ? Pour le moment j'utilise la solution de l'Activity avec thème Dialog mais lorsque je sors de mon appli avec la touche Home, ça lance aussi mon Activity principale ... Je fais un PendingIntent que je passe à l'AlarmManager Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tama Chan Posté(e) 25 août 2009 Share Posté(e) 25 août 2009 Voici ce qui marche pour moi: Intent detailIntent = new Intent(context, WidgetActivity.class); detailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); detailIntent.setAction(Intent.ACTION_MAIN); pending = PendingIntent.getActivity(context, 0, detailIntent,0); Ensuite tu passes cet Intent a ton alarme. Du coté de ton activity, dans le manifest: android:theme="@android:style/Theme.Dialog" android:label="Mon Activity" android:launchMode="singleTask" android:taskAffinity=":WidgetActivity"> ça devrait fonctionner.:D Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 25 août 2009 Auteur Share Posté(e) 25 août 2009 Oki merchi beaucoup Tama Chan, si ça fonctionne c'est pile ce que je cherche ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.