如何自己添加号码归属地数据库?
如何自己添加号码归属地数据库?
并完成 InCallScreen 和 CallLog 界面显示自己添加的号码归属地信息。
以添加一个英文版的国内手机号码归属地举例说明。
添加一个英文版的国内手机号码归属地
示例步骤:

1. 在如下目录增加 GeoCodingQueryEN.java

    PATH:  [4.2 JB] alps\mediatek\frameworks-ext\base\telephony\java\com\android\internal\telephony\

[4.4 KK] alps\mediatek\frameworks\base\geododing\java\com\mediatek\Geocoding\

主要负责打开 geocoding_en.db 后 query 号码归属地。

GeoCodingQueryEN.java 参考 GeoCodingQuery.java 而来。

2. 添加一个归属地数据库 geocoding_en.db

    PATH: alps\mediatek\external\GeoCoding\

手机号码英文版归属地geocoding_en.db 参考中文版而来。

在同目录下的Android.mk中增加数据库,如下:

LOCAL_PATH:= mediatek/external/GeoCoding PRODUCT_COPY_FILES += \

$(LOCAL_PATH)/geocoding.db:system/etc/geocoding.db \

$(LOCAL_PATH)/geocoding.db:system/etc/geocoding_en.db

3. 在CallerInfo.java 和 DefaultCallLogInsertionHelper.java 中调用 GeoCodingQueryEN 的 queryByNumberforEn() 方法查归属地

import com.android.internal.telephony.GeoCodingQueryEN;     // For EN version

... ...

GeoCodingQueryEN gcQuery = GeoCodingQueryEN.getInstance(mContext);

String geoInfo = gcQuery.queryByNumberforEn(number);

if (!TextUtils.isEmpty(geoInfo)) {

return geoInfo;

}

... ...

    NOTE:

      CallerInfo.java 中的修改决定IncallScreen归属地的显示;
      DefaultCallLogInsertionHelper.java 中的修改决定CallLog归属地的显示。
[DESCRIPTION]
在M版本后,已经不再使用上述MTK的号码归属地流程,改用默认的google的流程。
使用google默认的号码归属地库。由于google的库我们都无法进行相应的修改。
因此,如果有特殊的号码要进行修改,需要在如下的地方进行相应的客制化。
[SOLUTION]
/frameworks/base/telephony/java/com/android/internal/telephony/CallerInfoAsyncQuery.java

protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
Rlog.d(LOG_TAG, "##### onQueryComplete() ##### query complete for token: " + token);
.......
if (ENABLE_UNKNOWN_NUMBER_GEO_DESCRIPTION) {
if (TextUtils.isEmpty(mCallerInfo.name) ||
(SystemProperties.get("ro.mtk_phone_number_geo").equals("1"))) {
mCallerInfo.updateGeoDescription(mContext, cw.number);
}
}
......
}

/frameworks/base/telephony/java/com/android/internal/telephony/CallerInfo.java
public void updateGeoDescription(Context context, String fallbackNumber) {
String number = TextUtils.isEmpty(phoneNumber) ? fallbackNumber : phoneNumber;
geoDescription = getGeoDescription(context, number);
}

//在下面的函数中对传人的number的这个号码做相应的客制化。
private static String getGeoDescription(Context context, String number) {
if (VDBG) Rlog.v(TAG, "getGeoDescription('" + number + "')...");

if (TextUtils.isEmpty(number)) {
return null;
}

/// M: CC: Query city name via GeoCodingQuery @{
// [ALPS00286530]Query Geocoding description
if (SystemProperties.get("ro.mtk_phone_number_geo").equals("1")) {
GeoCodingQuery geoCodingQuery = GeoCodingQuery.getInstance(context);
String cityName = geoCodingQuery.queryByNumber(number);
Rlog.v(TAG, "[GeoCodingQuery] cityName = " + cityName);
if ((cityName != null) && (!cityName.equals(""))) {
return cityName;
}
}
/// @}

PhoneNumberUtil util = PhoneNumberUtil.getInstance();
PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();

Locale locale = context.getResources().getConfiguration().locale;
String countryIso = getCurrentCountryIso(context, locale);
PhoneNumber pn = null;
try {
if (VDBG) Rlog.v(TAG, "parsing '" + number
+ "' for countryIso '" + countryIso + "'...");
pn = util.parse(number, countryIso);
if (VDBG) Rlog.v(TAG, "- parsed number: " + pn);
} catch (NumberParseException e) {
Rlog.d(TAG, "getGeoDescription: NumberParseException for incoming number '"
+ number + "'");
}

if (pn != null) {
String description = geocoder.getDescriptionForNumber(pn, locale);
if (VDBG) Rlog.v(TAG, "- got description: '" + description + "'");
return description;
} else {
return null;
}
}

android 系统(155)---如何自己添加号码归属地数据库?相关推荐

  1. Android 系统(275)---紧急号码的管理及客制化方法

    紧急号码的管理及客制化方法 [Android Version] Android 5.0/5.1 (L) Android 6.0 (M) Android 7.0(N) Android 8.0(O) L及 ...

  2. android系统证书导入工具,添加Fiddler/Mitmproxy证书为安卓系统证书

    Android证书分为"用户证书"和"系统证书"两种,在设置->安全->"查看安全证书"列表中,可以看到"系统&quo ...

  3. android系统源码中添加app源码(源码部署移植)

    涉及到系统定制,需要在系统中加入自己的apk工程,但是上网找了很多资料都是不够全面的,或者看了还是没搞懂,我自己也是一点点摸索过来的,花了不少的时间,也是踩了不少的坑,因此特开一文,帮助大家渡河. 申 ...

  4. Android 系统默认铃声修改 添加删除铃声

    Android 7.0 修改系统默认铃声: build\target\product\full_base.mk ro.config.ringtone=14_Snowflakes.ogg \ ro.co ...

  5. Android 系统(151)----添加开关机铃声

    一.制作bootanimation.zip(windows)和准备开机铃声bootaudio.mp3 1.新建文件夹:bootanimation 2.在文件夹bootanimation中新建文件夹pa ...

  6. [android] 手机卫士号码归属地查询

    使用小米号码归属地数据库,有两张表data1和data2 先查询data1表,把手机号码截取前7位 select outkey from data1 where id="前七位手机号&quo ...

  7. 【Android从零单排系列一】《Android系统发展史》

    目录 前言 一.Android 创始人 二.Android 发展历程 三.Android各版本发布时间及特性 1.AndroidBeta:阿童木 2.Android 1.0:发条机器人 3.Andro ...

  8. 最新手机号段归属地数据库 2019年6月版 430826条记录

    2019年6月1日版 430826条记录 最新 手机号段数据库 号码归属地数据库 移动号段 联通号段 电信号段 170 171 号段(虚拟运营商) 权威 全面 准确 规范 字段包括 省份 城市 运营商 ...

  9. mysql手机号段地区库_最新手机号段归属地数据库 2019年12月版 441831条记录

    2019年12月1日版 441831条记录 最新 手机号段数据库 号码归属地数据库 移动号段 联通号段 电信号段 170 171 号段(虚拟运营商) 权威 全面 准确 规范 字段包括 省份 城市 运营 ...

最新文章

  1. win7 计算机不显示收藏夹,Win7电脑收藏夹不能用怎么解决?Win7电脑收藏夹不能用解决方法...
  2. 排序算法----快速排序(数组形式)
  3. sysctl mysql_服务器优化——Sysctl、Apache、MySQL
  4. java 文件读写demo
  5. python 文件操作 os.listdir() 遍历文件
  6. nginx配置ajax请求跨域
  7. 自动运维_无Agent自动化运维平台spug
  8. [转]Hadoop集群_WordCount运行详解--MapReduce编程模型
  9. maven上传jar到私服
  10. Python + Selenium + Chrome 使用代理 auth 的用户名密码授权
  11. 树形动态规划 java_树形动态规划
  12. JavaScript中变量的类型
  13. 电商时代,谁是手持数据采集巴枪的终结者【转】
  14. 海湾汉字编码表全部_汉字编码简明对照表
  15. 数据中心服务器巡检方案,IDC机房巡检方案
  16. vmware虚拟机桥接模式无法上网
  17. 找出直系亲属 牛客网
  18. 你们公司的产品[zhuan]
  19. android相框_如何将旧的Android平板电脑变成自动更新的数码相框
  20. FFmpeg源码分析:内存管理系统

热门文章

  1. MWC(2) Multiwii初学者详细准备
  2. console_init_r()函数分析
  3. linux编译安装含义,linux源码包编译安装详解
  4. Nginx反向代理其他使用方式
  5. SD 模拟sip 读写子程序
  6. mybatis 多参数处理
  7. Android安全问题 抢先开机启动
  8. MVC 使用Jquery实现AJax
  9. 基于django快速开发一个网站(一)
  10. vuejs 和 element 搭建的一个后台管理界面