Пометить пропущенные вызовы как прочитанные в 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 отключил доступ к этой функции сторонним приложениям.