Android: problema stringa nulla per la colonna 'indirizzo' per il provider di contenuti sms
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
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.