【问题标题】:Edit Call history names编辑通话记录名称
【发布时间】:2019-04-17 14:01:30
【问题描述】:

我已经实现了一个联系人应用程序,我希望我的应用程序的联系人姓名显示在设备的通话记录历史记录(电话应用程序)中,以防我接听/拨打这些号码.我怎样才能做到这一点?

【问题讨论】:

  • 所以,基本上你想创建一个联系人并显示在你的默认呼叫应用程序上?你检查contacts-provider了吗?

标签: android android-contacts android-syncadapter calllog android-account


【解决方案1】:

CallLog.Calls 表包含用于缓存名称的字段,因为这些是缓存名称,它们并不总是正确的,并且会不时刷新。

通常,在大多数电话/通话记录应用程序中,当您打开通话记录时,它会显示通话列表以及存储在 Calls 表中的缓存名称,然后启动一个后台服务来刷新缓存姓名,将姓名添加到最近保存为联系人的号码,或更新最近更改的姓名。

因此,如果您的应用将通话记录中的某个号码存储为联系人,那么如果您随后启动通话记录应用,您应该会在一两秒内看到更新后的姓名。

如果您想以编程方式将该名称存储在您的代码中,您可以轻松地做到这一点:

String someNumber = "+12125551234";
String aName = "Jane Addams";
int numberType = Phone.TYPE_MOBILE; // see https://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone#column-aliases

final ContentValues values = new ContentValues(2);
values.put(Calls.CACHED_NAME, aName);
values.put(Calls.CACHED_NUMBER_TYPE, numberType);

// on Lollipop+ device, you can also set Calls.CACHED_LOOKUP_URI and Calls.CACHED_FORMATTED_NUMBER

getContentResolver().update(Calls.CONTENT_URI, values, Calls.NUMBER + "='" + someNumber + "'", null);

【讨论】:

    【解决方案2】:

    谢谢@PedroHawk。我在您提供的link 中找到了答案。更具体地说,我将在设备帐户中为我的应用创建一个Account,然后使用SyncAdapter 将我的网络服务中的联系人数据同步到设备的ContactsProvider

    【讨论】:

      猜你喜欢
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      相关资源
      最近更新 更多