我已经实现了一个联系人应用程序,我希望我的应用程序的联系人姓名显示在设备的呼叫日志历史记录(电话应用程序(中,以防我接收/拨打这些号码。我怎样才能做到这一点?
CallLog.Calls
表包含用于缓存名称的字段,因为这些是缓存的名称,因此它们不应始终为 true,并且会不时刷新。
通常,在大多数电话/呼叫日志应用中,当您打开呼叫日志时,它将显示呼叫列表以及存储在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);
谢谢你@PedroHawk。我在您提供的链接中找到了答案。更具体地说,我将在设备帐户中创建我的应用的Account
,然后使用SyncAdapter
将联系人数据从我的 Web 服务同步到设备的ContactsProvider
。