7 Stimmen

Wie man verpasste Anrufe unter Android SDK 2.2 abruft

In meiner Anwendung sollte ich eine Aktion ausführen, wenn ein Anruf eingeht, aber vom Benutzer nicht angenommen wird.

Ich habe im Internet nach Android.Telefonie und die NotificationManager aber ich habe keine Methode gefunden, um dieses Problem zu lösen.

Hat jemand eine Idee, wie man herausfinden kann, ob ein verpasster Anruf auf dem Telefon ist oder nicht?

14voto

Camille Sévigny Punkte 5042

Hier ist Code, der das Anrufprotokoll nach einem verpassten Anruf abfragen kann. Grundsätzlich müssen Sie dies irgendwie auslösen und sicherstellen, dass Sie dem Anrufprotokoll etwas Zeit geben (ein paar Sekunden sollten genügen), um die Informationen zu schreiben, da Sie sonst, wenn Sie das Anrufprotokoll zu schnell überprüfen, den letzten Anruf nicht finden.

final String[] projection = null;
final String selection = null;
final String[] selectionArgs = null;
final String sortOrder = android.provider.CallLog.Calls.DATE + " DESC";
Cursor cursor = null;
try{
    cursor = context.getContentResolver().query(
            Uri.parse("content://call_log/calls"),
            projection,
            selection,
            selectionArgs,
            sortOrder);
    while (cursor.moveToNext()) { 
        String callLogID = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls._ID));
        String callNumber = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
        String callDate = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.DATE));
        String callType = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.TYPE));
        String isCallNew = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.NEW));
        if(Integer.parseInt(callType) == MISSED_CALL_TYPE && Integer.parseInt(isCallNew) > 0){
            if (_debug) Log.v("Missed Call Found: " + callNumber);
        }
    }
}catch(Exception ex){
    if (_debug) Log.e("ERROR: " + ex.toString());
}finally{
    cursor.close();
}

Ich hoffe, Sie finden dies nützlich.

0voto

GôTô Punkte 7877

Soviel ich weiß, müssen Sie die Anrufprotokoll Provider (oder vielleicht CallLog.Calls), und diese Seite erklärt, wie man den Content Provider abfragt: http://developer.Android.com/guide/topics/providers/content-providers.html#basics

Ich würde mich freuen, den Code zu sehen, wenn Sie das hinbekommen!

0voto

DeRagan Punkte 22442

Ich nehme an, Sie haben Anbieter von Inhalten, um auf Anrufprotokolle zuzugreifen.

http://www.anddev.org/video-tut_-_querying_and_displaying_the_calllog-t169.html

http://www.devx.com/wireless/Article/41133

Wenn dieser Code funktioniert, müssen Sie diese Abfrage nur zum richtigen Zeitpunkt ausführen. Ich meine, überprüfen Sie einige Beispiele, die Sie benachrichtigen können, wenn Sie einen Anruf in Ihrem Gerät erhalten

http://groups.google.com/group/Android-developers/browse_thread/thread/d97a759a3708cbe3

Sobald Sie diese Benachrichtigung erhalten, stellen Sie einen Timer ein oder verwenden Sie einige eingebaute Intents, um festzustellen, dass das Telefon wieder im Normalzustand ist und greifen Sie auf die Anrufprotokolle zu...

Mögliches Duplikat

Rundfunkempfänger für verpasste Anrufe in Android

Toast bei verpasstem Anruf in Android-Anwendung anzeigen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X