Ich habe eine App, die USSD-Anrufe macht, aber nach allen USSD-Anrufen habe ich einen Dialog mit dem Ergebnis für den Benutzer bekommen.Wie man einen System-Dialog programmatisch schließt/abbricht/abbricht (Android)
Ich weiß, dass es möglich ist, diesen Dialog zu schließen, weil die "USSD Checker" -App dies tun, erhalten sie die Antwort von USSD, ohne den Benutzerdialog zu zeigen.
Hat die Funktion displayMMIComplete
, die nach dem USSD-Aufruf abgeschlossen ist, zeigen eine TYPE_SYSTEM_DIALOG. Im PhoneUtils.java verwenden sie den Dialog wie folgt aus:
AlertDialog newDialog = new AlertDialog.Builder(context)
.setMessage(text)
.setPositiveButton(R.string.ok, null)
.setCancelable(true)
.create();
newDialog.getWindow().setType(
WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
newDialog.getWindow().addFlags(
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
newDialog.show();
dann kann ich nicht nur etwas Flagge schicken es zu schließen. Und ich kann diesen Import nicht als Systemklasse verwenden.
Und wenn ich X aufeinander folgende Anrufe X X Dialoge zum Benutzer schließen, und meine App muss aufeinander folgende Aufrufe zu tun, gibt es sowieso, um dieses System-Dialog programmatisch zu schließen?
By the way, doesn dieser Code‘ t funktionieren für mich, auch wenn ich 'android.permission.SYSTEM_ALERT_WINDOW' zur AndroidManifest.xml hinzufüge. 'android.view.WindowManager $ BadTokenException: Fenster kann nicht hinzugefügt werden [email protected] - Berechtigung für diesen Fenstertyp verweigert ' –
http://Stackoverflow.com/q/4344523/1065835. Es funktioniert –