Android - remove missed call notification

故事扮演 提交于 2019-11-30 23:48:17

yes, it is possible.Try this:

Uri UriCalls = Uri.parse("content://call_log/calls");
Cursor cursor = getApplicationContext().getContentResolver().query(UriCalls, null, null, null, null);

Reading call log entries...

if(cursor.getCount() > 0){
    cursor.moveToFirst();
    while(!cursor.isAfterLast()){
        String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER)); // for  number
        String name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME));// for name
        String duration = cursor.getString(cursor.getColumnIndex(CallLog.Calls.DURATION));// for duration
        int type = Integer.parseInt(cursor.getString(cursor.getColumnIndex(CallLog.Calls.TYPE)));// for call type, Incoming or out going
        cursor.moveToNext();
    }
}

Deleting entry in call log...

String queryString= "NUMBER='" + number + "'";
if (cursor.getCount() > 0){
        getApplicationContext().getContentResolver().delete(UriCalls, queryString, null);
}

Permission:

<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />

Note: Please refer this doc over call log for more clearity.

Using the above code you can get the desired result.

Dat Tran

Refer to this You can clear your missed call by calling cancel(ID) or calcelAll() to clear your notifications bar.

For the part where you want to remove the last call from the log you need to move the method that is deleting the entry into a class which is a subclass of the Thread class. This allows you to then set it to sleep for a short period to allow Android to actually write to the call log BEFORE you you run the delete query. I had the same problem, but manage to resolve it with the code below:

public class DelayClearCallLog extends Thread {

    public Context context;
    public String phoneNumber;

     public DelayClearCallLog(Context ctx, String pNumber){

            context = ctx;
            phoneNumber = pNumber;
        }

     public void run() {
         try {
             sleep(2000);
         } catch (InterruptedException e) {
             e.printStackTrace();
         }

         clearCallLog(context, phoneNumber);
     } 
 public void clearCallLog(Context context, String phoneNumber) {
         // implement delete query here
     }
}

Then call the the method as follows:

DelayClearCallLog DelayClear = new DelayClearCallLog(context, phoneNumber);
DelayClear.start();
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!