发送USSD代码时的奇怪行为(Android)

时间:2012-06-22 18:56:19

标签: android ussd

我有应用程序,它发送一些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处理程序调用时,会出现“呼叫转移连接问题或无效的MMI代码”消息。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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