Aller au contenu

Ouverture d'une boîte de dialogue au premier plan


Fluckysan

Recommended Posts

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)

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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(); 

Lien vers le commentaire
Partager sur d’autres sites

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 ?)

Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lien vers le commentaire
Partager sur d’autres sites

  • 4 weeks later...

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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);

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...