我正在尝试标记未接来电。我正在尝试以下方法:
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应用程序没有检测到这仍然显示未接来电徽章和通知。我们怎样才能清除它。
答案 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禁止将此功能授予第三方应用。