几天来,我一直在这里和其他论坛上阅读有关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对话.
https://play.google.com/store/apps/details?id=com.iba.ussdchecker&hl=en
我安装这个https://github.com/alaasalman/ussdinterceptor重新启动我的手机(S2 android 4.0.3),发送ussd代码但没有任何反应,有人告诉我,我必须阅读日志,但我怎么能这样做.
我尝试这些代码从日志中读取USSD
USSD.java
package com.example.ussd;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Calendar;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import android.util.Log;
public class USSD {
private static String startmsg = "displayMMIComplete"; // start msg to look
// for
private static String endmsg = "MMI code has finished running"; // stop msg
private static String trimmsg = "- using text from MMI message: '"; // a msg
// to
// remove
// from
// the …Run Code Online (Sandbox Code Playgroud) 通过android API,Android应用程序可以读取移动网络运营商发送的消息,当用户收到消息时,如下面的消息所示.如果是这样怎么样?:

我正在构建一个呼叫转发应用程序,并使用了*21*xxxxxx#ussd代码来激活使用ACTION_CALL Intent的呼叫转移.但我还没有找到解决方案来检查呼叫转移是否有效.
如果呼叫转移是否有效,是否有任何解决方案可以从Android系统检查?