2012-08-02 10 views
5

Come è possibile cancellare l'intera cronologia del registro chiamate in Android? Attualmente ho questo codice che può solo cancellare un particolare registro chiamateCome si cancella la cronologia dei registri delle chiamate in Android?

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

Non è l'ideale quindi un commento non una risposta, ma si può sempre leggere tutte le voci del registro delle chiamate ed eliminarli in questo modo ... – Basic

+0

Prova questa? @Rpc (description = "Elimina una voce dal registro chiamate ") vuoto deleteAnEntryFromCallLog (numero String) pubblica { provare { Uri CALLLOG_URI = Uri.parse (" tenore: // call_log/chiamate"); mService.getContentResolver(). Delete (CALLLOG_URI, CallLog.Calls.NUMBER + "=?", New String [] {numero}); } cattura (eccezione e) { e.getMessage(); } } –

+0

@AlexanderWigmore che non funziona – dythe

risposta

7

Sono stato in grado di farlo con questo, è stato un po 'però. Non sono sicuro se questo funziona ancora.

getContentResolver().delete(android.provider.CallLog.Calls.CONTENT_URI, null, null) ; 

EDIT: Si prega di notare che non sono certo che i progettisti di piattaforme destinate per le applicazioni siano in grado di eliminare il registro chiamate See this dev blog post. Quindi mentre questo funziona tecnicamente, per favore prendi questo come un chiaro avvertimento che potrebbe in qualsiasi momento cambiare e rompere ciò che stai cercando di costruire.

2

Non è possibile cancellare il tutto con una sola chiamata API.

È tuttavia possibile eliminarli uno a uno (come indicato nei commenti) scorrendoli tutti. Per farlo, ti consigliamo di use a Cursor. Tieni presente che il collegamento elimina solo le chiamate di durata inferiore a 60 secondi, pertanto dovrai modificare la creazione di Cursor per eliminare tutte le chiamate.

Nota: per le API 11+, è necessario utilizzare CursorLoader anziché managedQuery(...).

1

Prova questo:

String queryString="DURATION >= 0"; 
this.getContentResolver().delete(android.provider.CallLog.Calls.CONTENT_URI, queryString, null);