android 联系人中的号码格式

362 篇文章 3 订阅
129 篇文章 0 订阅
联系人中有一些地方会对号码进行format,一般会有两个问题:
1、        号码的间隔数目,例如4-3-4的间隔(1981 981 1981),3-4-4的间隔(198 1981 1981);
2、        间隔使用的是“-”还是“ ”(空格)。
 


号码间隔数目的问题
联系人主要利用Google的com.android.i18n.phonenumbers;这一包中做的号码处理。根据当时的CountryISO,也就是当前手机所处国家地区的情况来做不同的分隔。
例如:
中国(CountryISO:CN)
?  当判别为手机号码时,会186 7675 3984(3-4-4)
?  当判别为区号+号码时为,会是0755 2663 0099 (4-4-4)或者021 2663 0099 (3-4-4)
?  当判别为国家码+区号+号码时,会是00 86 755 2663 0099
总之这个判别规则会根据国家的号码特征来对应。
 
    若是海外需求,请在当地测试看是否符合需求。若是不符合需求请再做客制化修改。
  
   若是实在需要修改,需要自己写一个TextWatcher,例如在联系人编辑界面,输入号码的TextWatcher是在TextFieldsEditorView.java (alps\packages\apps\contacts\src\com\android\contacts\editor)的
    @Override
    public void setValues(DataKind kind, ValuesDelta entry, RawContactDelta state, boolean readOnly,
            ViewIdGenerator vig)
 
            if (inputType == InputType.TYPE_CLASS_PHONE) {
                /** M: New Feature xxx @{ */
                /*
                 * original code
                 * PhoneNumberFormatter.setPhoneNumberFormattingTextWatcher
                 * (mContext, fieldView);
                 */
                // add by mediatek
                ExtensionManager.getInstance().getContactDetailExtension().setViewKeyListener(
                        fieldView, ContactPluginDefault.COMMD_FOR_OP01);
                PhoneNumberFormatter.setPhoneNumberFormattingTextWatcher(mContext, fieldView, null);
                /** @} */
 
            }
这里 PhoneNumberFormatter.setPhoneNumberFormattingTextWatcher(mContext, fieldView, null);将设置Google 默认的TextWatcher,请在这里设置你自己的TextWatcher。
 
在TextWatcher中请重写public synchronized void afterTextChanged(Editable s)中判断并做数字间隔实现。
 
其他号码被format的地方也是一样注册自己的TextWatcher。
 
不能改动Google的com.android.i18n.phonenumbers,否则会导致CTS fail
 
号码间隔是“-”还是“ ”(空格)的问题
在上述TextWatcher完成号码format并返回后,再做进一步处理:
if(number.contains("-"))
     number = number.replace("-"," ");
或者
if(number.contains(" "))
     number = number.replace("","-");
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值