Android: problema stringa nulla per la colonna 'indirizzo' per il provider di contenuti sms

StackOverflow https://stackoverflow.com/questions/8812763

  •  26-10-2019
  •  | 
  •  

Domanda

Sto lavorando su un'applicazione Android che diceva l'sms dal fornitore di contenuti. L'applicazione funziona bene e leggere sms multa da fornitore di contenuti. Ma a volte (molto raro) l' 'indirizzo' torna colonna nullo per il messaggio sms.

Ecco il codice di esempio quello che sto usando:

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());
    }

sto ottenendo questo problema su Motorola Driod Android v2.3.5. Si prega di avvisare.

Ali

È stato utile?

Soluzione

Ho trovato il problema. Il sistema operativo Android salvare il messaggio come bozza in fornitore di contenuti SMS, se la scrittura di inizio e quindi chiudere l'applicazione SMS (a causa di chiamata in arrivo o qualsiasi altro motivo). Questo genera una nuova voce nel database SMS con valore nullo nella colonna 'indirizzo'.

Salman

Altri suggerimenti

Questo è un comportamento normale. Trovato nel documentazione smsmessage :

Restituisce l'indirizzo di origine (mittente) di questo messaggio SMS a String forma o nullo se non disponibile

Se le pause app a causa di un NPE più tardi, si dovrebbe inserire una verifica nullo e impostare l'indirizzo su una stringa vuota.

Un consiglio:. Una domanda deve chiedere qualcosa e si dovrebbe fornire una traccia dello stack se si dispone di un errore

Questo può accadere in caso di numero mascherato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top