【发布时间】:2012-03-28 12:58:25
【问题描述】:
我有一个可以拨打 USSD 电话的应用程序,但在所有 USSD 电话之后,我收到了一个对话框,其中包含用户的结果。
我知道可以关闭此对话框,因为“USSD Checker”应用会执行此操作,它们会从 USSD 获得响应而不显示用户对话框。
具有displayMMIComplete功能,完成Ussd调用后,显示TYPE_SYSTEM_DIALOG。在 PhoneUtils.java 中,他们使用这样的对话框:
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();
那么我不能只是发送一些标志来解除它。而且我不能使用它作为系统类的导入。
当我进行 X 次连续调用时,会向用户关闭 X 对话框,并且我的应用程序需要进行连续调用,无论如何以编程方式关闭此系统对话框?
【问题讨论】:
-
顺便说一句,即使我将
android.permission.SYSTEM_ALERT_WINDOW添加到AndroidManifest.xml,此代码也对我不起作用。android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRoot$W@40527640 -- permission denied for this window type