如何使用Android ACTION_CALL Intent发送DTMF铃声和暂停,号码中带逗号?

如何使用Android ACTION_CALL Intent发送DTMF铃声和暂停,号码中带逗号?,android,Android,我有一个调用用户存储的号码的应用程序。除非数字包含逗号或散列符号,否则一切正常,在这种情况下,Uri在数字之后被截断。我已经读到,你需要对散列符号进行编码,但即使这样做,或者没有散列符号,逗号也永远不会通过。然而,如果你只是从你的联系人中选择号码,他们确实会通过。我一定是做错了什么。例如: String number = "1234,,,,4#1"; Uri uri = Uri.parse(String.format("tel:%s", number)); try { startActivi

我有一个调用用户存储的号码的应用程序。除非数字包含逗号或散列符号,否则一切正常,在这种情况下,Uri在数字之后被截断。我已经读到,你需要对散列符号进行编码,但即使这样做,或者没有散列符号,逗号也永远不会通过。然而,如果你只是从你的联系人中选择号码,他们确实会通过。我一定是做错了什么。例如:

String number = "1234,,,,4#1";
Uri uri = Uri.parse(String.format("tel:%s", number));
try {
  startActivity(new Intent(callType, uri));
} catch (ActivityNotFoundException e) { ...

只有数字“1234”会出现在拨号程序中。

哈希和逗号是URL中的保留字符。因此,转换这两种格式(逗号是
%2C
,散列是
%23
),看看这是否有帮助。

对我来说适用于“,”,“*”和“#”:


对不起,我应该说我已经试过了:String numbercoded=URLEncoder.encode(number),但也失败了。这很奇怪,因为文档中说:“构建和解析符合RFC 2396的URI引用。”但我也遇到了编码逗号消失的问题。我还尝试了:URI URI=URI.fromParts(“tel”,number,null),它会自动编码,但结果相同。这是可能的。我想我需要对它进行试验,并尝试找到一个解决方法。有人找到了这个问题的解决方案吗?因为在我的国家,有必要输入电话号码“,”和分机,但在尝试时,本机呼叫应用程序会在最后删除“,”的所有内容。错误的、误导性的回答。请注意,这是针对Android 1.6的,它在emulator(HTC Magic)上失败,还有一个运行2.01的Motorola Droid。另请参见。问题是,我正在从联系人列表中读取电话号码,用户可能已经输入了任何序列作为字符串,例如“12345、、、、、#1”。我读取了该序列并通过URL传递。也许是URI.parse是问题所在。我不再做这个了,所以无法测试它。我还注意到在我的问题之后出现了一个相关的问题:
Intent intentCallForward = new Intent(Intent.ACTION_CALL);                             
Uri uri = Uri.fromParts("tel", phoneNumber, "#"); 
intentCallForward.setData(uri);                                
startActivity(intentCallForward);