2012-06-08 8 views
8

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

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

не работает.

+0

убедитесь, что у вас '<использует-разрешение андроид: имя = "android.permission.READ_CONTACTS"/> <использует-разрешение андроид: Name = "android.permission.WRITE_CONTACTS"/ > 'разрешение в человеке ifest –

+0

какая ошибка у вас? отправьте свой логарифм. –

+0

@imrankhan это работает, но я хочу удалить определенное число из журналов вызовов. – sai

ответ

15

убедитесь, что у имеют следующие разрешения в manifast.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); 
} 
+6

Разве вы не имеете в виду ' '? :) – keybee

+0

Это не работает для меня. –

4

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

+0

Если у вас есть вопрос, задайте новый вопрос. –

+0

Это решение работает как магия :) –

2
<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. 
+1

Это работает и над Зефиром. Я просто добавил этот комментарий, если кто-то наткнулся на этот ответ. –

5

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

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

Да, это хорошее решение – Achin

+0

Спасибо. Ваш ответ был очень полезным, простым и обеспечивающим понимание темы. – JamisonMan111

2

Вот усовершенствованный способ, например, если сохраненный номер в базе данных, как: "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"/> 
+0

Супер полезное спасибо – JamisonMan111

Смежные вопросы