android - CyanogenMod10 如何确定来电者的位置?

标签 android android-4.2-jelly-bean cyanogenmod

编辑:将 JellyBean 更改为 cyanogenmod 10,因为它可能是 cyanogen 功能

我注意到我的手机在 CyanogenMod10 手机下的通话记录中显示了来电者的(大概)位置(仅当号码是固定电话而不在我的通讯录中时)。

它不仅依赖于国家代码,因为它还会在找到调用者时显示调用者所在的城市。我浏览了联系人包应用程序,发现值是从数据库中获取的(在 com.android.contacts.CallDetailActivity 中)

final String countryIso = callCursor.getString(COUNTRY_ISO_COLUMN_INDEX);
final String geocode = callCursor.getString(GEOCODED_LOCATION_COLUMN_INDEX);

所以我认为它在成功调用或接听电话后位于电话包应用程序中。但我很快就迷失在源代码中……我想知道这些值在哪里以及(简要地)如何设置以及解析地理编码。

电话号码是否发送到神秘的网络服务?

Cyanogen 是否有包含世界上所有国家代码和城市前​​缀的表格(我怀疑)?

或者该数据库的下载取决于您所在的国家/地区?

最佳答案

终于找到了这个东西是怎么工作的

首先 ContactsProvider 在调用 DefaultCallLogInsertionHelper.addComputedValues 时添加这个值

看这里

https://github.com/CyanogenMod/android_packages_providers_ContactsProvider/blob/ics/src/com/android/providers/contacts/DefaultCallLogInsertionHelper.java#L59

@Override
public void addComputedValues(ContentValues values) {
    // Insert the current country code, so we know the country the number belongs to.
    String countryIso = getCurrentCountryIso();
    values.put(Calls.COUNTRY_ISO, countryIso);
    // Insert the geocoded location, so that we do not need to compute it on the fly.
    values.put(Calls.GEOCODED_LOCATION,
            getGeocodedLocationFor(values.getAsString(Calls.NUMBER), countryIso));
}

所以你看到的代码

final String countryIso = callCursor.getString(COUNTRY_ISO_COLUMN_INDEX);
final String geocode = callCursor.getString(GEOCODED_LOCATION_COLUMN_INDEX);

实际上是从保存的数据中读取

因此,真实数据来自 PhoneNumberOfflineGeocoder,您可以在此处找到 https://github.com/CyanogenMod/android_external_libphonenumber/blob/ics/java/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java

那是一个叫做 libphonenumber 的东西

https://code.google.com/p/libphonenumber/

关于android - CyanogenMod10 如何确定来电者的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13541537/

相关文章:

android - 如果我删除旧的 Android API 级别并只保留最新的级别,会发生什么情况

android - 在android中检查外部应用程序版本名称

java - Android - main.xml 和 Activity_main.xml 是同一概念吗?

Android 自定义 View 代码在 Jelly Bean 4.2 中停止正常工作

Android View 在视觉上处于正常位置,但实际上 - 在 TranslateAnimation 之后的起始位置

android - 基于主机的卡仿真,请提供任何指导?

javascript - 安装 Android 6.0.1 后,应用程序在调试时崩溃

android - 在 init.rc 中启用 logcat

android - 编写一个在android中关闭主应用程序时执行的后台程序

android - AChartEngine 移动条形图