Пометить пропущенные вызовы как прочитанные в Android Call Log

Я пытаюсь отметить пропущенные звонки, чтобы прочитать. Я пытаюсь сделать следующее:

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 ответа

Сначала добавьте разрешения:

<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();
    }

}

Вы не можете удалить уведомление о пропущенном вызове. Google отключил доступ к этой функции сторонним приложениям.

Другие вопросы по тегам