【问题标题】:How do I send DTMF tones and pauses using Android ACTION_CALL Intent with commas in the number?如何使用带有逗号的 Android ACTION_CALL Intent 发送 DTMF 音和暂停?
【发布时间】:2011-02-02 06:37:59
【问题描述】:

我有一个应用程序可以呼叫用户存储的号码。除非数字包含逗号或井号,否则一切正常,在这种情况下,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”会出现在拨号器中。

【问题讨论】:

标签: android


【解决方案1】:

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

【讨论】:

  • 对不起,我应该说我已经尝试过了:String numberEncoded = URLEncoder.encode(number) 也失败了。这很奇怪,因为文档说:“构建和解析符合 RFC 2396 的 URI 引用。”但是我遇到了编码逗号消失的同样问题。
  • 我也尝试过:Uri uri = Uri.fromParts("tel", number, null),它会自动对其进行编码,但结果相同。
  • 有可能。我想我需要尝试一下并尝试找到解决方法。
  • 有没有人找到解决这个问题的方法?因为在我的国家,需要输入电话号码“,”和分机号,但是在尝试时,本地呼叫应用程序会删除最后“,”的所有内容。
  • 错误的、误导性的答案。
【解决方案2】:

适用于我 ',' , '*' & '#':

Intent intentCallForward = new Intent(Intent.ACTION_CALL);                             
Uri uri = Uri.fromParts("tel", phoneNumber, "#"); 
intentCallForward.setData(uri);                                
startActivity(intentCallForward); 

【讨论】:

  • 问题是我正在从联系人列表中读取电话号码,并且用户可能输入了任何序列作为字符串,例如 '12345,,,#1' 我读了这个并通过它传递URL 意图。也许问题出在 URI.parse 上。我不再从事此工作,因此无法对其进行测试。
  • 我还注意到我的后面出现了一个相关问题:stackoverflow.com/questions/3615886/…
猜你喜欢
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
相关资源
最近更新 更多