求解android电话号码中的特殊字符

lindir 2012-12-10 09:52:37
昨儿出现了一个测试contacts出现的bug,出错地点是PhoneNumberUtils.charToBCD()。出错原因是java.lang.RuntimeException: invalid char for BCD ;
意思是这个函数中的;号没有做处理。
求问:电话号码中的几个特殊字符是什么意思?(包括, ; N +等)
网上搜了很久,都没找到,特求问大神
...全文
462 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lindir 2012-12-19
  • 打赏
  • 举报
回复
看样子是沉了,结贴吧
问答小助手 2012-12-11
  • 打赏
  • 举报
回复
private static int
    charToBCD(char c) {
        if (c >= '0' && c <= '9') {
            return c - '0';
        } else if (c == '*') {
            return 0xa;
        } else if (c == '#') {
            return 0xb;
        } else if (c == PAUSE) {
            return 0xc;
        } else if (c == WILD) {
            return 0xd;
        } else {
            throw new RuntimeException ("invalid char for BCD " + c);
        }
    }
异常是在 PhoneNumberUtils.java - android-vcard 中由以上代码中抛出的。在函数中检查;是否通过。 也可以从vCard中解析一个电话号码。在vCard中,电话号码通常是以free-form文本形式编码的,意思是可以包含各种字符。也可以以 URIs形式编码,如果一个电话号码有一个电话分机,一个电话号码的URI就会包含一个;。如: tel:+1-555-555-5555;ext=5555
lindir 2012-12-10
  • 打赏
  • 举报
回复
大神在哪里。。。不要沉了,继续顶起求回复
lindir 2012-12-10
  • 打赏
  • 举报
回复
引用 5 楼 sanhe0060 的回复:
刚刚验证P应该是拨打分机号是使用,W是诸如直接拨打10086;1就相当于拨通10086后在摁1的操作。
以后多多交流,联系方式已私信
sanhe0060 2012-12-10
  • 打赏
  • 举报
回复
这个是3gpp文档中的解释:This will cause the MMI to prompt the user for a single digit (see TS 22.101 [24]).我也迷茫中
lindir 2012-12-10
  • 打赏
  • 举报
回复
引用 4 楼 sanhe0060 的回复:
在3gpp文档中规定:对SIM卡中的号码要转换成BCD码,规则如下:0-F中,0-9表示0~9,A是*,B是#,C是PAUSE(,),D是WILD,在android中被定义为N,即是6,E是RFU,个人猜测是Reserved For Future Use,F是奇偶校验位。 号码还有WAIT(;),+等。+是一些地区码的前缀,P和W是对号码的分割,具体可以用真机验证一下,我也不是很清楚其作用。 ……
多谢多谢,弱弱的问一句,wild是啥意思啊?
lindir 2012-12-10
  • 打赏
  • 举报
回复
引用 3 楼 DennisBu 的回复:
http://expression.microsoft.com/zh-cn/library/cc728034(en-us,WS.10).aspx 说的是这个意思吧?
看来这位兄弟给的文档,有号码的制式,但是还是不知道那些符号的意思,但还是很感谢,谢谢~谢谢~
sanhe0060 2012-12-10
  • 打赏
  • 举报
回复
刚刚验证P应该是拨打分机号是使用,W是诸如直接拨打10086;1就相当于拨通10086后在摁1的操作。
sanhe0060 2012-12-10
  • 打赏
  • 举报
回复
在3gpp文档中规定:对SIM卡中的号码要转换成BCD码,规则如下:0-F中,0-9表示0~9,A是*,B是#,C是PAUSE(,),D是WILD,在android中被定义为N,即是6,E是RFU,个人猜测是Reserved For Future Use,F是奇偶校验位。 号码还有WAIT(;),+等。+是一些地区码的前缀,P和W是对号码的分割,具体可以用真机验证一下,我也不是很清楚其作用。 我也是做Contacts的,以后可以多多交流。
欢乐的小熊 2012-12-10
  • 打赏
  • 举报
回复
passself 2012-12-10
  • 打赏
  • 举报
回复
不知道,不好意思

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧