2012-06-08 14 views
8

come eliminare/rimuovere il registro delle chiamate dall'applicazione. Sto facendo cosìCome rimuovere i registri delle chiamate da Android a livello di programmazione?

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

non funziona.

+0

assicurarsi u hanno ' 'permesso nell'uomo ifest –

+0

quale errore si ottiene? per favore pubblica il tuo logcat. –

+0

@imrankhan funziona ma voglio cancellare un numero particolare dai registri delle chiamate. – sai

risposta

15

assicurarsi u hanno seguito il permesso in manifast.xml:

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

per cancellare Calllogs per particolare numero di provare in questo modo:

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

non intendi ' '? :) – keybee

+0

Questo non funziona per me. –

4

La soluzione esistente non cancellerà i numeri con 0 o + prefisso. Affinché funzioni per tutti i numeri di telefono, è necessario inserire il numero tra virgolette singole, in questo modo: String queryString = "NUMBER = '" + deleteNumber + "'"; Spero che questo aiuti.

+0

Se avete una domanda, quindi si prega di inviare una nuova domanda. –

+0

Questa soluzione ha funzionato come per magia :) –

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

Funziona anche su Marshmallow. Ho appena aggiunto questo commento se qualcuno inciampa su questa risposta. –

5

La risposta accettata eliminerà tutte le chiamate dal registro chiamate per un numero specifico. Se si desidera eliminare una sola chiamata, è possibile farlo passando CallLogId a quella funzione ed eseguire questa query.

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

sì, è una buona soluzione – Achin

+0

Grazie. La tua risposta è stata molto utile, semplice e fornendo informazioni sull'argomento – JamisonMan111

2

Ecco un modo migliore, per esempio se il numero memorizzato nel database è come: "914.111.222" questo metodo può trattare numeri come: "+ 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); 

} 

si richiede l'autorizzazione come:

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

Super utile grazie – JamisonMan111

Problemi correlati