Android: Null String Assuge для столбца «адрес» для провайдера SMS -контента
Вопрос
Я работаю над приложением Android, которое читает SMS от поставщика контента. Приложение работает нормально и читайте SMS -штраф от поставщика контента. Но иногда (очень редко) столбец «адрес» возвращает NULL для сообщения SMS.
Вот пример кода, что я использую:
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());
}
Я получаю эту проблему на Motorola Driod Android v2.3.5. Пожалуйста, порекомендуйте.
Али
Решение
Я нашел проблему. ОС Android Сохраните сообщение в качестве проекта в SMS -поставщике контента, если начать писать, а затем закройте приложение SMS (из -за входящего вызова или любой другой причины). Это генерирует новую запись в базе данных SMS с нулевым значением в столбце «адрес».
Салман
Другие советы
Это нормальное поведение. Найдено в Документация SMSMESSAGE:
Возвращает исходный адрес (отправитель) этого SMS -сообщения в строковой форме или NULL, если недоступен
Если ваше приложение ломается из -за NPE позже, вы должны вставить нулевую проверку и установить адрес на пустую строку.
Совет: вопрос должен что -то задать, и вы должны предоставить трассировку стека, если у вас есть ошибка.
Это может произойти в случае маскированного номера.