【问题标题】:How does android handle the +-sign in a phonenumberandroid如何处理电话号码中的+-sign
【发布时间】:2013-03-20 20:29:59
【问题描述】:

我正在尝试通过代码调用电话卡,并希望将以下 uri 发送到意图:

访问号码+暂停+电话号码+#

电话号码来自地址列表,但我如何处理 +(如退出代码),因为它例如在美国 011 和欧洲 00。而且我想我不能只将它发送到意图.有办法处理吗?

问题是电话卡希望加号为 00 或 011。

String uri = "tel:" + Uri.encode(phonenumber)

try { 
                Intent intentCall = new Intent(Intent.ACTION_CALL); 
                intentCall.setData(Uri.parse(uri));  
                startActivity(intentCall);
                } catch (ActivityNotFoundException e)        { }

【问题讨论】:

  • 为什么不能直接发送到intent?你试过了吗?
  • “只是尝试”在我看来是许多错误应用程序的来源,这些应用程序依赖于非官方支持的行为,这些行为不能保证在不同版本中持续存在。检查文档几乎总是更好。
  • 此外,看看它在这种情况下是否有效将涉及在多个国家/地区进行测试,这将非常昂贵......
  • 朱尔斯,我试过了。问题是我想让多张卡成为可能(因此确实存在昂贵的测试因素)并且 + 不起作用,它要求退出代码,例如 00 或 011。我认为 Android 几乎必须'将 + 翻译成默认语言环境的退出代码,所以应该有一个返回退出代码的方法。

标签: android android-intent exit-code


【解决方案1】:

Android is documented 使用 rfc3966 兼容的电话 uri。 RFC3966 规定“+”字符用于国际拨号,因此 Android 应识别“+”字符并进行适当处理。

【讨论】:

  • 问题是我是在电话卡访问号码之后发送的,所以我必须将其调整为退出代码。我希望也许 android 会自动将 + 调整为该语言环境的退出代码,有没有办法?
  • 嗯...我明白了问题所在。 '+' 字符仅在数字开头有效,因此不能保证有效(即使在某些版本中有效,但在其他版本中可能无效)。你是如何获得你的电话卡号码的?您能否以相同的方式获得退出代码(可以想象,一些电话卡提供商可能会使用与用户本地不同的退出代码,例如,考虑欧洲的用户通过其服务设置为美国标准的卡提供商呼叫,所以询问卡提供商该怎么做可能是最好的事情)?
  • 是的,我想是的。如果 sim 例如有退出代码会很好。从现在开始,如果它是另一张卡,它是不兼容的。
  • 不幸的是,电话实际上并不需要知道这些信息(呼叫是通过发送informit.com/library/… 中描述的格式的数据包来建立的,正如您所见,它有一个“地址类型”字段指定拨打的号码是国内号码还是国际号码),因此 Android 不太可能知道代码。
猜你喜欢
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
  • 2016-08-16
  • 2014-09-06
  • 2021-10-05
  • 1970-01-01
相关资源
最近更新 更多