码迷,mamicode.com
首页 > 移动开发 > 详细

android 联系人中的号码格式

时间:2014-09-25 10:48:12      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:android   io   使用   java   for   sp   问题   on   c   

联系人中有一些地方会对号码进行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("","-");

android 联系人中的号码格式

标签:android   io   使用   java   for   sp   问题   on   c   

原文地址:http://blog.csdn.net/sergeycao/article/details/39395363

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!