我有一个应用程序可以进行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();
Run Code Online (Sandbox Code Playgroud)
然后我不能只发一些旗帜来解雇它.我不能使用导入它的系统类.
而当我做X连续调用出现X对话框给用户关闭,而我的应用程序将需要连续调用,无论如何以编程方式关闭此系统对话框?
如果您尝试使用USSD调用我找到了问题的答案,您可以禁用结果文本
在俄罗斯博客中有一篇帖子展示了如何连接到android的phoneutils服务,然后控制来自USSD(CALL和RESULT)的文本.他展示了一个使用界面(IExtentedendNetworkService)的示例,该界面仅在Android OS启动时绑定在手机工具上,如果没有任何其他应用程序尝试执行相同的操作(因为只有一个服务可以绑定,可能是你的或不是,我不知道Android OS用来选择的规则.
在函数"CharSequence getUserMessage(CharSequence text);"中 如果返回null,则不会显示结果对话框.
只需在代码中添加此行即可.
Intent intent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9665 次 |
| 最近记录: |