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("","-");

时间: 2024-08-12 21:27:10

android 联系人中的号码格式的相关文章

Android中的时间日期格式如何定义

1.如何保证日期格式与系统设定的一致: Date date = new Date(location.getTime()); DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext()); mTimeText.setText("Time: " + dateFormat.format(date)); 注意此处应该应该用 android.text.format.Dat

android 如何关闭来电号码归属地

MTK平台号码归属地分为两种:1.手机号码归属地:2.固话号码归属地: 手机号码归属地: 是MTK自己做的,关闭只需要关闭MTK_PHONE_NUMBER_GEODESCRIPTION这个option即可: 数据库文件所在路径为 alps/mediatek/external/geocoding/geocoding.db: 仅支持汉语. 固话号码归属地: 是Google Android系统自带的,关闭需要注解掉Google的原始code: 数据库文件所在路径为 alps/external/libp

android官方技术文档翻译——aar 格式

本文译自androd官方技术文档<AAR Format>,原文地址:http://tools.android.com/tech-docs/new-build-system/aar-format. 本文地址:http://blog.csdn.net/maosidiaoxian/article/details/41578499.转载请注明出处.翻译如有错讹,敬请指正. AAR 格式 "aar"包是 Android 的类库项目的二进制发行包. 文件扩展名是.aar,maven 项

Cocos2dx Android在编译的时候格式出错例如(snprintf)

在不同的平台上进行编译的时候,由于某些方法不是c++的标准库,因此经常会报出一下错误,比如格式错误,snprintf()win32和ios上是会有错,但是在android就会报出格式错误,只要在Application.mk上添加一句 APP_CFLAGS += -Wno-error=format-security 就会忽视格式错误 APP_STL := gnustl_static APP_CPPFLAGS := -frtti -DCOCOS2D_DEBUG=1 -std=c++11 -Wno-l

Android学习之输出HTML格式下的文字方法详解

在Android开发中,我们经常会用到TextView这个控件,在使用的过程中,我们用到最多的方法就是setText(),单纯的使用基本上能够满足我们日常的需求,但是有时候我们需要对文字进行一些处理,比如说加粗.斜体.下划线等等,这些也都是可以通过Android提供的原生方法完成.但是如果我们需要实现下面的效果呢: HTML下的文字解析(快速版) 从图片上我们可以看到,这段文字分别有 两种大小,三种颜色 .我们当然可以定义多个TextView来实现这样的效果,但是如果我们的文字变化较多,那么定义

Android开发中 .9.png格式图形设计:

Android .9.png设计 宿舍大神在做android项目,有幸得知.9.png的图形格式. 不知道大家是否注意过聊天气泡和锁屏时随着你文字的增多和你的滑动而跟着变化并且分辨率没有变低的图形?是否好奇过它是怎么实现的? 该图片格式应用于Android设计中需要根据文字多少或其他条件而可以伸缩的图形外框,(应用于聊天气泡和滑动锁屏等). 而设计这种格式的不是ps等图片.处理工具而是Android-sdk里自带的draw9path.bat工具.  先找到自己电脑上的D:\you yong\El

Android加入新的视频格式--媒体库扫描

需求:在mediaprovider数据库中加入.mov后缀格式的视频文件 能够使用工具MediaInfo_GUI_0.7.67_Windows.3243836749.exe 查看mov文件编码格式类型,能够到http://download.csdn.net/detail/deng0zhaotai/8767089下载. 概要 完整名称 : D:\好歌曲学员合.mov 文件格式 : MPEG-4 格式简单介绍 : QuickTime 编码设置ID : qt 文件大小 : 83.8 MiB 长度 :

Android添加新的视频格式--媒体库扫描

需求:在mediaprovider数据库中添加.mov后缀格式的视频文件 可以使用工具MediaInfo_GUI_0.7.67_Windows.3243836749.exe 查看mov文件编码格式类型,可以到http://download.csdn.net/detail/deng0zhaotai/8767089下载. 概要 完整名称 : D:\好歌曲学员合.mov 文件格式 : MPEG-4 格式简介 : QuickTime 编码设置ID : qt 文件大小 : 83.8 MiB 长度 : 1分

Android应用中对webp格式图片的处理

一.为什么用webp格式webp格式可以将图片尽量小得压缩,这个在移动应用中使用很广,且技术较成熟. 二.编译动态库包编译的动态库包的源码参照GitHub地址请添加链接描述 我的环境Android Studio3.0.1gradle 3.3jdk 1.8.0_101ndk-build android-ndk-r10e-windows-x86_64 导入Android Studio,注意Application.mk中的配置,APP_ABI配置是指需要生成哪些环境下的so包,我的环境起初添加了arm