Wenn ein Anruf beendet wird, wie kann ich sicher sein, dass ich das Anrufprotokoll abfrage, nachdem die Anrufinformationen in die Datenbank geschrieben wurden?
Ich suche nach dem Ende eines Anrufs, indem ich ein BroadcastReceiver
mit einem Intent-Filter auf android.intent.action.PHONE_STATE
benutze, um nach dem Telefon zu suchen, das in den Leerlauf geht.
Jede Hilfe hierzu wäre willkommen.
Danke
Hier ist die sehr, sehr gute Antwort.
Siehe Link
Wenn Sie das obige Beispiel sehen, werden Sie lernen, wie man den Endzustand des Anrufs bekommt und Sie werden auch daran denken, dass nach Beendigung des Anrufs CALL_STATE_IDLE
mehr als einmal anruft, also müssen Sie eine statische Variable in einigen wo und Sie nehmen muss diesen Variablenwert überprüfen, bevor Sie im Idealzustand arbeiten.
BEARBEITEN
Android speichert Anrufprotokollinformationen in seiner integrierten Datenbank.
Eine bessere Lösung ist, dass wenn Ihr Code IDLE
state nach OFFHOOK
state aufruft, Sie alle neuen Anruflisten von der eingebauten Datenbank in Ihre Datenbank kopieren können, um Informationen über die Anrufliste zu erhalten
Sie können Anrufprotokollinformationen aus der integrierten Datenbank mit der folgenden Abfrage abrufen
Cursor c = context.getContentResolver().query(android.provider.CallLog.Calls.CONTENT_URI, null, null, null, null);
EDIT2
Hier ist ein vollständiges Beispiel
Dies ist die PhoneStateListener-Klasse
%Vor%Dies ist die Broadcast-Empfängerklasse
%Vor%Dies ist die Funktion zum Abrufen neuer Anrufprotokolle aus der internen Datenbank
%Vor%Dies ist eine Manifestdatei
%Vor%Tags und Links android broadcastreceiver