0

我正在尝试通过 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 列表进行检查时进行查询,更新值保留几分之一秒,然后显示旧值...

我不知道我在哪里做错了,请帮助我...

4

1 回答 1

1

看到这个问题已经有一年多了,我不知道你是否还在寻找这个问题的答案。以为你无论如何都想知道答案。

您的代码完全没问题,它会按预期更新通话记录。但是由于您只是更改名称,因此不太可能坚持下去。Call Logs 中的 name 字段是一个缓存名称,如Android 文档中所示,并且可能会在您每次查看日志时刷新。

如果您只是更改姓名,与号码关联的姓名将从联系人列表中刷新,这就是您在日志中看不到更新姓名的原因。或者,您会在列表刷新/更新之前看到更改。

于 2012-09-30T17:53:00.293 回答