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.
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();
}
}
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" />
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