Frage

Ich arbeite an einer Android -Anwendung, die die SMS vom Inhaltsanbieter liest. Die Anwendung funktioniert einwandfrei und liest SMS gut vom Inhaltsanbieter. Aber irgendwann (sehr selten) gibt die Spalte "Adresse" NULL für die SMS -Nachricht zurück.

Hier ist Beispielcode, was ich verwende:

String whereClause = "_id > " + String.valueOf(Database.getLastSmsId(this));
        Cursor cursor = getContentResolver().query(smsUri, null, whereClause, null, null);
        if(cursor.moveToFirst()) {
            do {
                int id = cursor.getInt(cursor.getColumnIndex("_id"));
            String protocol = cursor.getString(cursor.getColumnIndex("protocol"));
            String body = cursor.getString(cursor.getColumnIndex("body"));

            String address = cursor.getString(cursor.getColumnIndex("address")); // <----- Here is the problem
            // address returns as null string

            String date = cursor.getString(cursor.getColumnIndex("date"));

                Log.d(Constants.TAG, "SMS event received. address="+address);
            } while(cursor.moveToNext());
    }

Ich bekomme dieses Problem in Motorola Draiod Android V2.3.5. Bitte beraten.

Ali

War es hilfreich?

Lösung

Ich fand das Problem. Das Android -Betriebssystem speichert die Nachricht als Entwurf im SMS -Inhaltsanbieter, wenn Sie die SMS -App (aufgrund eines eingehenden Anrufs oder anderer Gründe) beginnen und dann schließen). Dies generiert einen neuen Eintrag in der SMS -Datenbank mit Nullwert in der Spalte "Adresse".

Salman

Andere Tipps

Dies ist ein normales Verhalten. Gefunden in der SMSMessage -Dokumentation:

Gibt die Ursprungsadresse (Absender) dieser SMS -Nachricht in Zeichenfolgenform oder Null zurück, falls nicht verfügbar

Wenn Ihre App aufgrund eines NPE später bricht, sollten Sie eine Null -Prüfung einfügen und die Adresse in eine leere Zeichenfolge einstellen.

Ein Rat: Eine Frage sollte etwas gestellt und Sie sollten eine Stapelspur angeben, wenn Sie einen Fehler haben.

Dies kann bei maskierter Nummer passieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top