如何在Uri方法中拨打特殊字符?

时间:2012-01-28 21:34:51

标签: android

嗨我正在制作一个应用程序,通过短信自动/激活呼叫转移,除了解析呼叫转发代码的一些字符外,所有工作都正常。

这是执行呼叫转发代码的代码,此代码记录在此处:http://en.wikipedia.org/wiki/Call_forwarding#Keypad_codes

Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:"+Uri.encode("#")+Uri.encode("#")+"21"+Uri.encode("#")));
                ((Intent)callIntent).addFlags(268435456);
                this.context.startActivity((Intent)callIntent);

取消呼叫的代码是## 21#但是我的应用程序总是出现错误,看起来它无法读取我上面发布的命令,但是如果我将手动拨打它就可以了..

1 个答案:

答案 0 :(得分:1)

尝试使用ACTION_DIAL而不是ACTION_CALL来表示** 21 *和## 21# 查看此link,我认为它具体解决了您的问题。

这是TLDR:

String uri = "**21*268435456#";   // ##21#268435456#  
Intent intent = new Intent(Intent.ACTION_DIAL); // ACTION_CALL  
Uri uri2 = Uri.fromParts("tel", uri, "#");  
intent.setData(uri2);  
startActivity(intent);