Android:如何从应用程序数据库向 Android 手机应用程序提供有关数字的数据 - 最近

问题描述

如何让android认手机应用程序从我的应用程序数据库中将指定的名称分配给号码并显示它?

我想要实现的目标的示例:
号码 XXX-XXX-XXX 昨天给我打电话,我的通讯录中没有它的名字,但我的应用程序数据库中有它的名字,所以在电话应用程序中 - 最近将显示我的应用程序数据库中的联系人姓名而不是 XXX- XXX-XXX。

解决方法

可以通过将值写入 CACHED_NAME 表中的 CallLog.Calls 字段来实现。

但是这有两个问题:

  1. Google Play 应用中的通话记录访问权限仅适用于非常特定的用例,请参阅:https://support.google.com/googleplay/android-developer/answer/10208820?hl=en
  2. 大多数(如果不是全部)电话应用程序会在启动时刷新 CACHED_NAME 字段,因此它将查询联系人表以获取该电话号码,不会找到任何具有该号码的联系人,然后会清除名称。

唯一可行的解​​决方案是在您的应用中为每个电话号码创建一个新的 RawContact,其中包含一个简单的 Phone 行和一个 StructuredName 行。

这会将这些号码添加到用户的联系人表中,并且还会在通话记录应用中显示姓名。