Java 如何强制最近通话活动显示联系人';插入某人的姓名

Java 如何强制最近通话活动显示联系人';插入某人的姓名,java,android,smartphone,Java,Android,Smartphone,我试图以编程方式在我的HTC上插入一个新调用 ContentValues values = new ContentValues(); values.put(android.provider.CallLog.Calls.NUMBER, someNumber); values.put(android.provider.CallLog.Calls.CACHED_NAME, someName); values.put(android.provider.CallLog.Calls.CACHED_NUMBE

我试图以编程方式在我的HTC上插入一个新调用

ContentValues values = new ContentValues();
values.put(android.provider.CallLog.Calls.NUMBER, someNumber);
values.put(android.provider.CallLog.Calls.CACHED_NAME, someName);
values.put(android.provider.CallLog.Calls.CACHED_NUMBER_TYPE, 0);
values.put(android.provider.CallLog.Calls.CACHED_NUMBER_LABEL, "");
values.put(android.provider.CallLog.Calls.DATE, someTime);
values.put(android.provider.CallLog.Calls.DURATION, someDuration);
values.put(android.provider.CallLog.Calls.NEW, 1);
contentResolver.insert(uri, values);
嗯,调用显示在列表中,但我总是看到(未知)而不是缓存的名称。同样的代码在三星上运行良好,但由于某些原因,在HTC上表现不佳。这是HTC上的一种类似bug的行为,还是我遗漏了一些东西


感谢您的帮助。

好的。经过深入调查,我找到了原因。由于某种原因,HTC设备正在从另一个名为“cname”的字段而不是从其他字段检索呼叫者姓名

android.provider.CallLog.Calls.CACHED_NAME="name"
使用以下方法可以达到此目的:

String static final HTC_CACHED_NAME="cname"
if (isHTCDevice) 
    values.put(HTC_CACHED_NAME, someName);
...

让我知道

我尝试过这种解决方法,但我的HTC Desire HD运行2.3.3时出现了一个例外。你有没有找到其他的解决办法?我相信你的HTC有一个不同的域名。尝试转储列名,找出您的设备使用的名称。我的使用“名称”,但仍然没有正确的方式,HTC吸X-(