1

我有应用程序,它发送一些 USSD 代码。在一种情况下,来自带有界面的用户操作,在另一种情况下 - 当收到一些 SMS(带通配符)时。

我有一个发送 USSD 的代码:

private static void setCallDivert (Context context, String phoneNo) {
    String callForwardString = "**21*" + phoneNo + "#";
    Log.i("Call forward string", callForwardString);

    Intent intentCallForward = new Intent(Intent.ACTION_CALL);
    intentCallForward.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    Uri uri2 = Uri.fromParts("tel", callForwardString, "#");
    intentCallForward.setData(uri2);                                
    context.startActivity(intentCallForward);
    divertDbRecord (context, true, phoneNo);
}

当它从按钮 onClick 方法调用时,它工作正常。

当它从 SMS Handler 调用时,会出现消息“呼叫转移连接问题或无效的 MMI 代码”。

在 logcat 中,我可以看到一个请求。在这两种情况下都是一样的。

当然,我是在真正的 Android 手机上测试它,而不是在模拟器上。

也许,有人可以帮助我吗?

4

1 回答 1

1

您需要对您的 Uri 哈希进行编码

public static final String encodedHash = Uri.encode("#");

这允许拨号器正确解释 # 值

于 2013-06-22T13:50:24.803 回答