首页 > 代码库 > android 联系人中的号码格式
android 联系人中的号码格式
联系人中有一些地方会对号码进行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("","-");
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 联系人中的号码格式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。