web-dev-qa-db-fra.com

Dialogue d'alerte Android depuis un service d'intention

Je souhaite afficher une boîte de dialogue d'alerte depuis un service d'intention. 

   AlertDialog alertDialog = new AlertDialog.Builder(this).create();

Cela jette l'exception suivante 

   Unable to add window — token null is not for an application

J'ai aussi essayé IntentService.this et getApplicationContext (). Entre je ne veux pas le faire en utilisant une activité. Je veux juste montrer un simple dialogue d'alerte avec un petit texte.

11
Sayed Jalil Hassan

Besoin de Activity pour afficher AlertDialog, car nous ne pouvons pas afficher Dialog à partir de Service

Solution.

Créez Activity comme thème de dialogue et démarrez cette Activity à partir de Service.

Juste besoin de vous enregistrer Activity dans menifest.xml comme ci-dessous

Android:theme="@Android:style/Theme.Dialog"

ou

Android:theme="@Android:style/Theme.Translucent.NoTitleBar"

MyDialog.Java

public class MyDialog extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle("your title");
        alertDialog.setMessage("your message");
        alertDialog.setIcon(R.drawable.icon);

        alertDialog.show();
    }
}
22
Niranj Patel

Si vous définissez votre type alertDialog sur TYPE_SYSTEM_ALERT, il sera affiché à partir d'un service d'intention.

 AlertDialog alertDialog = new AlertDialog.Builder(this).create();

ajoutez-les après votre code:

alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alertDialog.show();

Mais, cela a un coût:

<uses-permission Android:name="Android.permission.SYSTEM_ALERT_WINDOW" />
11
Eliran Kuta

Veuillez visiter 

https://github.com/selmantayyar/Custom-SMS-Popup

ça va sûrement vous aider !!

ou ce que vous pouvez faire est d’enregistrer une activité dans menifest.xml comme suit

Android:theme="@Android:style/Theme.Dialog"

ou

Android:theme="@Android:style/Theme.Translucent.NoTitleBar"

et contourner

0
Jitesh Upadhyay