编辑通话记录名称

问题描述 投票:0回答:2

我已经实现了一个联系人应用程序,我希望我的应用程序的联系人名称显示在设备的通话记录历史记录(电话应用程序)中,以防我收到/拨打这些号码。我怎么能实现这一目标?

android android-contacts android-syncadapter calllog android-account
2个回答
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);

0
投票

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

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.