问题
I am working to an android app that displays the missed calls using:
String[] projection = new String[]{CallLog.Calls.NUMBER,
CallLog.Calls.TYPE,
CallLog.Calls.DURATION,
CallLog.Calls.CACHED_NAME,
CallLog.Calls._ID};
String where = CallLog.Calls.TYPE+"="+CallLog.Calls.MISSED_TYPE+" AND " + CallLog.Calls.NEW + "=1" ;
Cursor c = context.getContentResolver().query(CallLog.Calls.CONTENT_URI,projection,where, null, null);
c.moveToFirst();
if(c.getCount() > 0)
newCountersObj.missedCallCounter=c.getCount();
After checking the missed calls in my android listview I want to mark them as read in android DB. How can I do that?
Question update with the following link:
clear missed calls error in android.database.SQLite
回答1:
By setting is_read
flag to true. Reference: http://developer.android.com/reference/android/provider/CallLog.Calls.html#IS_READ
Example (from ClearMissedCallsService):
// Clear the list of new missed calls.
ContentValues values = new ContentValues();
values.put(Calls.NEW, 0);
values.put(Calls.IS_READ, 1);
StringBuilder where = new StringBuilder();
where.append(Calls.NEW);
where.append(" = 1 AND ");
where.append(Calls.TYPE);
where.append(" = ?");
context.getContentResolver().update(Calls.CONTENT_URI, values, where.toString(),
new String[]{ Integer.toString(Calls.MISSED_TYPE) });
来源:https://stackoverflow.com/questions/16561167/how-to-mask-missed-calls-to-read-in-android