我正在尝试通过Android应用程序访问通话记录。我已通过应用程序获取数据并更新数据库的值,但更新后我无法获取调用列表中的更新值。
我试过下面的代码:
Uri allCalls = Uri.parse("content://call_log/calls");
Cursor c = managedQuery(allCalls, null, null, null, null);
if (c.moveToFirst()) {
do{
String callType = "";
switch (Integer.parseInt(c.getString(
c.getColumnIndex(Calls.TYPE))))
{
case 1: callType = "Incoming";
break;
case 2: callType = "Outgoing";
break;
case 3: callType = "Missed";
}
} while (c.moveToNext());
}
ContentValues values=new ContentValues();
values.put("name", "Unknown");
int k=getContentResolver().update(allCalls, values,null, null);
我得到了k的整数值,因为更新了多少行,但在调用列表中我没有获得更新值。
编辑: 我可以插入和删除调用列表值,当我检入调用列表时,它显示结果为插入新行或删除现有的但是当我更新值时我可以更新它返回值作为更新查询的结果当我通过单击callLog list进行检查,更新值保持几分之一秒,然后显示旧值......
我不知道我做错了哪里?请帮帮我......
答案 0 :(得分:1)
看到这个问题超过一年,我不知道你是否还在寻找答案。无论如何,你以为你想知道答案。
您的代码完全正常,它会按预期更新通话记录。但是既然你改变了名字,就不太可能坚持下去。 “呼叫日志”中的名称字段是一个缓存名称,如Android Documentation中所示,并且每次查看日志时都可能会刷新。
如果您只是更改名称,则会从“联系人”列表中刷新与该号码关联的名称,这就是您在日志中看不到更新名称的原因。或者,您将看到更改,直到列表刷新/更新。