Android: Null String Assuge для столбца «адрес» для провайдера SMS -контента

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

  •  26-10-2019
  •  | 
  •  

Вопрос

Я работаю над приложением 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 позже, вы должны вставить нулевую проверку и установить адрес на пустую строку.

Совет: вопрос должен что -то задать, и вы должны предоставить трассировку стека, если у вас есть ошибка.

Это может произойти в случае маскированного номера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top