3

我想将CallLog.Calls.TYPEAndroid 呼叫日志中第一个条目的字段从更新MISSEDINCOMING。我读过书,开发人员参考并在谷歌上搜索到死,并且有理由确定我的代码是正确的。但是,当我实际调用 时update(),结果是没有更新记录。我的代码示例如下。

在你问之前:
- 我有权限WRITE_CONTACTS
- 要更新的记录 (0) 确实存在
- 我已经在 DroidX (Verizon) 和三星 Galaxy (AT&T) 上尝试过 - 我已经尝试过其他各种更长的形式结果相同的代码

有人可以帮忙吗?

    ContentValues newValues = new ContentValues();
    newValues.put(CallLog.Calls.TYPE, CallLog.Calls.INCOMING_TYPE);
    newValues.put(CallLog.Calls.DURATION, 50);
    int result = OsmoService.context.getContentResolver().update(
    ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI, 0), 
    newValues,null,null);
4

3 回答 3

1

如果您更新上面的代码并替换该行:

ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI, 0)

用这条线:

Uri.parse("content://call_log/calls")

有用。我不知道为什么,但内容 URI 有一些不正确的地方。

例子:

ContentValues newValues = new ContentValues();
newValues.put(CallLog.Calls.TYPE, CallLog.Calls.INCOMING_TYPE);
newValues.put(CallLog.Calls.DURATION, 50);
int result = OsmoService.context.getContentResolver().update(
    Uri.parse("content://call_log/calls"), 
    newValues,
    null,
    null);
于 2011-04-26T18:22:56.310 回答
1
ContentValues cv = new ContentValues();
cv.put(CallLog.Calls.NUMBER,"7070770"); // contact number

cv.put(CallLog.Calls.TYPE,1); // type

cv.put(CallLog.Calls.DURATION, 120); // duration in second


getContentResolver().insert(CallLog.CONTENT_URI, cv);
于 2015-10-25T17:49:03.193 回答
0

例如 CallLog.Calls.CACHED_NAME

private void updateCachedName(int id, @NonNull String name) {

    ContentValues contentValues = new ContentValues();
    contentValues.put(CallLog.Calls.CACHED_NAME, name);

    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_CALL_LOG) == PackageManager.PERMISSION_GRANTED) {

        getContext().getContentResolver().update(CallLog.Calls.CONTENT_URI, contentValues, CallLog.Calls._ID + "=" + id, null);
    }
}
于 2018-03-21T09:37:15.763 回答