我有应用程序,它发送一些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手机上测试它,而不是在模拟器上测试。
也许,有人可以帮助我吗?
答案 0 :(得分:1)
您需要对Uri哈希值进行编码
public static final String encodedHash = Uri.encode("#");
这允许拨号器正确解释#值