将未接来电标记为在Android通话记录中读取

时间:2013-12-19 07:17:25

标签: android calllog

我正在尝试标记未接来电。我正在尝试以下方法:

ContentValues values = new ContentValues();    
values.put(Calls.NEW, Integer.valueOf(0));    
if (android.os.Build.VERSION.SDK_INT >= 14){    
   values.put(Calls.IS_READ, Integer.valueOf(1));    
}

StringBuilder where = new StringBuilder();    
where.append(Calls.NEW);
where.append(" = 1 AND ");    
where.append(Calls.TYPE);    
where.append(" = ?");    
ContentResolver cr = getContentResolver();    
Uri baseUri = Uri.parse("content://call_log/calls");    
int numUpdated = cr.update(baseUri, values, where.toString(),new String[]{ Integer.toString(Calls.MISSED_TYPE) });

这实际上标志着我的应用程序的呼叫读取,但原生Android应用程序没有检测到这仍然显示未接来电徽章和通知。我们怎样才能清除它。

2 个答案:

答案 0 :(得分:0)

首先添加权限:

<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />

插入更改参数is_read未接来电的函数后,我们从其id:

获取
public void markCallLogRead(int id) {

    Uri CALLLOG_URI = CallLog.Calls.CONTENT_URI;
    ContentValues values = new ContentValues();
    values.put("is_read", true);
    try{
        getContentResolver().update(CALLLOG_URI, values, "_id=?",
                new String[] { String.valueOf(id) });
    }catch(Exception e){
        e.printStackTrace();
    }

}

答案 1 :(得分:0)

您无法清除未接来电通知。 Google禁止将此功能授予第三方应用。