Android USSD以编程方式无效

时间:2015-12-29 20:09:47

标签: android ussd

我试图使用以下

以编程方式发送USSD

String smallTalkCode = "*" + "808" + "*" + "13" + Uri.encode("#"); startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:" + smallTalkCode)));

但它不起作用。我可以从日志调试中看到#被替换为%23。为什么Uri.encode(“#”)不起作用?

`12-29 23:06:27.092 16357-16357 / com.example.tsf.myfirstapp D / TAG:* 808 * 13%23

2 个答案:

答案 0 :(得分:1)

我发现我的代码是正确的,错误来自运营商方面。我试图从电话拨号发送* 808 * 13#并得到相同的错误响应。并试图发送另一个USSD短代码,使用下面的代码工作正常。我最初对Uri.encode("#")的%23输出感到困惑。但它看起来#应该转换为%23以便工作和#不应该直接使用。我试过

String ussdCode = "*" + "804" + Uri.encode("#"); startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:" + ussdCode))); Log.d(mTtitle,smallTalkCode);

得到了我预期的回应。加上日志我看到 804 %23

感谢您的支持

答案 1 :(得分:0)

您不需要对Uri进行编码"#"。只需使用"#"简单地

String smallTalkCode  = "*" + "808" + "*" + "13" + "#";