2012-08-02 17 views
5

Wie können Sie den gesamten Anrufprotokollverlauf in Android löschen? Derzeit habe ich diesen Code, der nur ein bestimmtes Anrufprotokoll löschen kannWie löschen Sie Ihren Anrufprotokollverlauf in Android?

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

Nicht ideal, um einen Kommentar keine Antwort, aber man konnte immer alle Anrufprotokolleinträge lesen und sie auf diese Weise löschen ... – Basic

+0

Try this? @Rpc (description = "Löscht einen Eintrag aus Anrufprotokoll ") public void deleteAnEntryFromCallLog (String-Nummer) { versuchen { Uri CALLLOG_URI = Uri.parse (" Inhalt: // call_log/Anrufe"); mService.getContentResolver(). Delete (CALLLOG_URI, CallLog.Calls.NUMBER + "=?", Neuer String [] {Zahl}); } catch (Ausnahme e) { e.getMessage(); } } –

+0

@AlexanderWigmore, die nicht funktioniert – dythe

Antwort

7

Ich konnte es damit machen, es ist schon eine Weile her. Nicht sicher, ob das noch funktioniert.

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

EDIT: Bitte beachten Sie, ich nicht sicher bin, dass die Plattform-Designer für Anwendungen bestimmt der Lage sein, See this dev blog post das Anrufprotokoll zu löschen. Obwohl dies technisch funktioniert, bitte nehmen Sie dies als eine faire Warnung, dass es an irgendeinem Punkt ändern und brechen kann, was Sie versuchen zu bauen.

2

Sie können nicht alle mit einem einzigen API-Aufruf löschen.

Sie können sie jedoch einzeln löschen (wie in den Kommentaren erwähnt), indem Sie alle durchgehen. Um das zu tun, wollen Sie use a Cursor. Beachten Sie: Dieser Link löscht nur Anrufe von weniger als 60 Sekunden. Sie müssen also die Cursor Erstellung ändern, um stattdessen alle Anrufe zu löschen.

Hinweis: Für APIs 11+ sollten Sie CursorLoader statt managedQuery(...) verwenden.

1

Try this:

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