2011-01-27 116 views
0

我用下面的代码从Android应用程序内发起呼叫的Android电话:启动与特殊字符#

intent.setData(Uri.parse("tel:+12345 #123")); 
startActivity(intent); 

虽然开始呼叫,它忽略了一切开始与#。

我读一些有关修改SpecialCharSequenceMgr.java文件,但我不能找到这个任何地方,老实说不知道到底是什么一个必须做的。解决这个问题的最好方法是什么?

回答

9

我相信这个问题是该#符号具有URI中有特殊的意义,所以你必须使用Uri.encode()方法这样对它进行编码:

Intent out = new Intent(); 
    out.setAction(Intent.ACTION_DIAL); 
    out.setData(Uri.parse("tel:" + Uri.encode("+12345#123"))); 
    startActivity(out); 
+0

感谢您的快速回复。这会导致电话屏幕打开并显示正确的号码(包括特殊字符),但不会再开始呼叫。必须手动按下绿色电话按钮。有没有一种方法可以在不手动按下按钮的情况下启动呼叫?非常感谢... – user387184 2011-01-27 12:14:19

4

我相信,乔恩并不是完全正确的你的问题,当时的想法是没有那么糟糕,但... 您需要使用特殊字符映射发起井号键:

Intent intcall = new Intent(Intent.ACTION_CALL); 
intcall.setData(Uri.parse("tel:5555" + "%23"+"additional number")); 
startActivity(intcall); 
0

意向OUT =新意图();

out.setAction(Intent.ACTION_DIAL);

out.setData(Uri.parse( “电话:” + Uri.encode( “+ 12345#123”)));

startActivity(out);