我正在开发一个Android应用程序.我基本上想要阅读USSD对应用程序的回应.有没有API可以这样做?如何将这些消息提取到应用程序中?
几天来,我一直在这里和其他论坛上阅读有关USSD对话的线索.(USSD表示运营商的通知,其中包含通话费用详情).
我已经看到很多解决方案显然适用于Android中较低的API级别,但经过大量的测试,认为它们不再工作或者至少我无法让它们工作.
首先,我想知道是否有任何方法可以检测是否已向用户显示ussd对话框.所以我试过这个: 阻止USSD对话并阅读USSD回复?
但我从日志中获得的所有东西都与我的应用程序有关,虽然我可以在Eclipse的LogCat中看到它们,但我的应用程序中没有捕获到MMI相关的日志!也许它的工作版本低于我的Android版本(4.2.2).
然后我决定使用"IExtendedNetworkService",就像它在以下链接中使用的那样:
https://github.com/alaasalman/ussdinterceptor
使用IExtendedNetworkService在Android中获取USSD响应
实施USSD功能.将服务绑定到PhoneUtils,而不是在每次更新时重新启动手机
但它对Android 4.2.2及更高版本也没用.
然后我找到了这个链接: 如何解除Android中的系统对话框?
它似乎很有希望,但即使经过大量的测试,我也无法使它工作.我想也许我做错了什么,或者也是为了降低API.
之后我尝试了许多其他的东西,比如模拟主键和后退键,甚至以编程方式触摸隐藏该通知,但由于它们都在我自己的活动下工作,所以没有一个工作.
有谁知道这些方法或其他方法是否适用于管理甚至检测Android 4.2.2及更高版本中的USSD消息?
我非常感谢任何帮助,提前谢谢.
我有一个应用程序可以进行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对话框给用户关闭,而我的应用程序将需要连续调用,无论如何以编程方式关闭此系统对话框?