Как программно удалить журналы вызовов из android?

Как удалить / удалить журнал вызовов из приложения. Я так делаю

this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,null,null); 

Он не работает.

Solutions Collecting From Web of "Как программно удалить журналы вызовов из android?"

Убедитесь, что у вас есть следующее разрешение в manifestast.xml:

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

Для удаления Calllogs для определенного номера попробуйте этот способ:

 public void DeleteCallLogByNumber(String number) { String queryString = "NUMBER=" + number; this.getContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null); } 

Принятый ответ удалит все вызовы из журнала вызовов для определенного номера. Если вы хотите удалить только один вызов, вы можете сделать это, передав CallLogId этой функции и запустив этот запрос.

 public void DeleteCallById(String idd) { this.getContentResolver().delete(CallLog.Calls.CONTENT_URI,CallLog.Calls._ID + " = ? ", new String[] { String.valueOf(idd) }); } 

Существующее решение не будет удалять номера с префиксом 0 или +. Чтобы это работало для всех телефонных номеров, нужно поместить число в одинарные кавычки, например: String queryString = "NUMBER = '" + deleteNumber + "'"; Надеюсь это поможет.

Вот улучшенный способ, например, если сохраненный номер в базе данных подобен: «914111222» этот метод может иметь дело с цифрами вроде: «+ 98 914 111 2222»:

 public void removeContactsLogFromPhoneLogs(String numberTag){ char[] number=numberTag.toCharArray(); String n="%"; for(int i=0;i<number.length;i++) { n=n+(number[i]+"%"); } String queryString=CallLog.Calls.NUMBER+" LIKE '"+n+"'"; mContext.getContentResolver().delete(CallLog.Calls.CONTENT_URI,queryString,null); } 

Для этого требуется разрешение:

 <uses-permission android:name="android.permission.WRITE_CALL_LOG"/> 
 <uses-permission android:name="android.permission.WRITE_CALL_LOG"/> You need to give only this permission to work along with this method this.getContentResolver().delete(CallLog.Calls.CONTENT_URI, null, null); Its working perfectly for me. I've tested it on my Moto-G running Kitkat 4.4.2 and Samsung Note with Jelly Bean 4.1.