3

CallLog.Calls.TYPEAndroid Call Log の最初のエントリのフィールドをからMISSEDに更新したいと思いINCOMINGます。私は本を​​読んだことがあり、開発者はこれを参照してグーグルで検索し、私のコードが正しいことを合理的に確信しています。しかし、実際に を呼び出すとupdate()、レコードが更新されないという結果になります。私のコードサンプルは以下です。

質問する前に:
- 権限がありWRITE_CONTACTS
ます - 更新するレコード (0) は存在します
- DroidX (Verizon) と Samsung 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
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 に答える
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 に答える