手机系统ROM开发中的电话号码格式客制化
来源:互联网 发布:mac唇线笔 编辑:程序博客网 时间:2024/06/05 04:14
需求描述:
在华为手机海外定制的需求中,针对电话号码的格式显示诉求,各地区有所不同,比如针对委瑞内拉地区需要按4-4-3格式化
实现细节:
首先判断其国家码,在国家码为VE的情况下,对其特殊处理。
需要修改到的文件有
(1).AsYouTypeFormatter.java中的afterTextChanged(Editable s)
packages/apps/contactscommon/src/com/android/contacts/common/Util
此文件涉及拨号盘、联系人编辑界面等一个数字挨一个数字输入的号码格式化
(2).PhoneNumberUtils.java中的formatNumber(String phoneNumber, String defaultCountryIso)
frameworks/base/telephony/java/android/Telephony
此文件涉及通话界面、联系人详情界面等一次性对号码格式化的情形
Google Android系统中,电话号码格式化跟用户所处国家地区有关。
根据系统获得当前CountryIso,例如中国大陆是CN,美国是US,英国是UK等,按照每个国家电话号码书写习惯,格式化符合规则的号码。
例如在中国,固话格式化为“区号 xxxx xxx”或“区号 xxxx xxxx”,而手机号码格式化为“1xx xxxx xxxx”。
获得CountryIso:
Android系统当前国家码是通过接口String countryIso = GeoUtil.getCurrentCountryIso()获得。而GeoUtil.getCurrentCountryIso()一直会Call到系统服务CountryDetector,并在ComprehensiveCountryDetector.detectCountry()函数确定当前CountryIso。
系统服务CountryDetector遵循从getNetworkBasedCountry(), getLastKnownLocationBasedCountry(), getSimBasedCountry(), getLocaleCountry()顺序,其精度依次由高到低,获得系统当前最可能的CountryIso。通过查找mobilelog关键字“CountryDetector”,查看当前获得国家码。
因此,系统当前获得的CountryIso与SIM卡网络注册情况、最近一次定位位置情况、SIM发卡运营商所在地区类型、当前Android系统语言地区设置情况相关。
格式化号码:
AsYouTypeFormatter.java
(path: external\libphonenumber\java\src\com\android\i18n\phonenumbers)
通过构造函数AsYouTypeFormatter(String regionCode)传入当前CountryIso,由成员函数public String inputDigit(char nextChar)或public String inputDigitAndRememberPosition(char nextChar)依次格式化目前所输入的字符串。
根据系统获得当前CountryIso,例如中国大陆是CN,美国是US,英国是UK等,按照每个国家电话号码书写习惯,格式化符合规则的号码。
例如在中国,固话格式化为“区号 xxxx xxx”或“区号 xxxx xxxx”,而手机号码格式化为“1xx xxxx xxxx”。
获得CountryIso:
Android系统当前国家码是通过接口String countryIso = GeoUtil.getCurrentCountryIso()获得。而GeoUtil.getCurrentCountryIso()一直会Call到系统服务CountryDetector,并在ComprehensiveCountryDetector.detectCountry()函数确定当前CountryIso。
系统服务CountryDetector遵循从getNetworkBasedCountry(), getLastKnownLocationBasedCountry(), getSimBasedCountry(), getLocaleCountry()顺序,其精度依次由高到低,获得系统当前最可能的CountryIso。通过查找mobilelog关键字“CountryDetector”,查看当前获得国家码。
因此,系统当前获得的CountryIso与SIM卡网络注册情况、最近一次定位位置情况、SIM发卡运营商所在地区类型、当前Android系统语言地区设置情况相关。
格式化号码:
AsYouTypeFormatter.java
(path: external\libphonenumber\java\src\com\android\i18n\phonenumbers)
通过构造函数AsYouTypeFormatter(String regionCode)传入当前CountryIso,由成员函数public String inputDigit(char nextChar)或public String inputDigitAndRememberPosition(char nextChar)依次格式化目前所输入的字符串。
根据语言判断:
if (Locale.getDefault().getLanguage() != null && Locale.getDefault().getLanguage().equals("es")) {
}
MTK平台需要修改的具体文件:
信息模块修改:
index : platform/packages/yepapp/YepMms.git
Modified src/com/android/mms/util/PhoneNumberFormatter.java
-import android.telephony.PhoneNumberFormattingTextWatcher;
+import com.android.mms.util.PhoneNumberFormattingTextWatcher;
Add src/com/android/mms/util/PhoneNumberFormattingTextWatcher.java
我们这边自己重新加了个PhoneNumberFormattingTextWatcher.java供mms模块使用
在src/com/android/mms/ui/ComposeMessageActivity.java的显示的地方,判断如果为委内瑞拉版本,调用下PhoneNumberFormatter.setPhoneNumberFormattingTextWatcher(this, mRecipientsEditor);
联系人模块修改:
index : platform/packages/yepapp/YepContactsCommon.git
Modified src/com/android/contacts/common/util/PhoneNumberFormatter.java
-import android.telephony.PhoneNumberFormattingTextWatcher;
+import com.android.contacts.common.util.PhoneNumberFormattingTextWatcher;
Add src/com/android/contacts/common/util/PhoneNumberFormattingTextWatcher.java
阅读全文
0 0
- 手机系统ROM开发中的电话号码格式客制化
- iOS开发获取手机通讯录中的电话号码和姓名
- iOS开发获取手机通讯录中的电话号码和姓名
- 表单验证中的电话号码格式校验
- 深入浅出 - Android系统移植与平台开发(五)- 定制手机模拟器ROM
- 深入浅出 - Android系统移植与平台开发(五)- 定制手机模拟器ROM
- 深入浅出 - Android系统移植与平台开发(五)- 定制手机模拟器ROM
- 深入浅出 - Android系统移植与平台开发(五)- 定制手机模拟器ROM
- Android 原生系统,手机rom下载网站
- iOS开发调用系统通讯录获取电话号码
- ROM开发 系统下载应用开发
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
- 手机访问页面时,拨打页面中的电话号码~
- android Rom修改关于系统时间日期格式的修改
- 第十二期 Android ROM结构分析《手机就是开发板》
- Android手机系统开发中的AP和BP是什么
- 正则验证电话号码、手机
- android 获取手机电话号码
- Java小案例——使用双重for循环实现杨辉三角的输出
- 进程池、线程池、内存池
- linux中shell 特殊变量$0 $n $* $@ $! $?的详解
- 项目笔记---项目一:超市管理系统
- Codeforces Round #376 (Div. 2) F. Video Cards —— 前缀和 & 后缀和
- 手机系统ROM开发中的电话号码格式客制化
- MySQL阅读笔记
- jQuery中的Ajax操作
- 查看一个exe文件是32位还是64位
- Ajax与Flash的优缺点
- 行车路程
- Epoll,poll,select详解
- 统计指定日期是今年的第多少天。
- 驱动框架有关的结构体——设备、驱动、总线、类,属性结构体