2012-06-08 3 views
8

comment supprimer/supprimer le journal des appels de l'application. Je fais comme ceciComment supprimer les journaux d'appels de android par programme?

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

cela ne fonctionne pas.

+0

assurez-vous que u ont ' 'permission dans l'homme ifest –

+0

quelle erreur obtenez-vous? s'il vous plaît poster votre logcat. –

+0

@imrankhan cela fonctionne, mais je veux supprimer un certain nombre de journaux d'appels. – sai

Répondre

15

assurez-vous que u ont la permission suivante dans manifast.xml:

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

pour supprimer Calllogs pour nombre particulier essayer cette façon:

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

ne veux pas dire ' '? :) – keybee

+0

Cela ne fonctionne pas pour moi. –

4

La solution existante ne supprime pas les nombres avec 0 ou + préfixe. Pour que cela fonctionne pour tous les numéros de téléphone, il faut mettre le nombre entre guillemets, comme ceci: String queryString = "NUMBER = '" + deleteNumber + "'"; J'espère que cela aide.

+0

Si vous avez une question, veuillez poster une nouvelle question. –

+0

Cette solution a fonctionné comme par magie :) –

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

Cela fonctionne aussi sur Marshmallow. Je viens d'ajouter ce commentaire si quelqu'un trébuche sur cette réponse. –

5

La réponse acceptée supprimera tous les appels du journal des appels pour un numéro spécifique. Si vous souhaitez supprimer un seul appel, vous pouvez le faire en passant CallLogId à cette fonction et exécuter cette requête.

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

oui, c'est une bonne solution – Achin

+0

Merci. Votre réponse a été très utile, simple, et donnant un aperçu du sujet – JamisonMan111

2

est ici un moyen amélioré, par exemple, si le numéro enregistré dans la base de données est comme: "914111222" cette méthode peut traiter avec de tels chiffres: "+ 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); 

} 

il faut que la permission:

<uses-permission android:name="android.permission.WRITE_CALL_LOG"/> 
+0

Super utile merci – JamisonMan111

Questions connexes