我试图使用以下
以编程方式发送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
答案 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" + "#";