2012-01-11 4 views
1

Я работаю над приложением для Android, которое читает смс из поставщика контента. Приложение отлично работает и отлично читает sms от поставщика контента. Но иногда (очень редко) столбец «адрес» возвращает значение null для сообщения sms.Android: проблема с пустой строкой для столбца «адрес» для поставщика контента 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. Пожалуйста, порекомендуйте.

Ali

ответ

2

Я нашел проблему. Андроид OS сохраняет сообщение как черновик в поставщике контента SMS, если начать писать, а затем закрыть приложение SMS (из-за входящего вызова или по любой другой причине). Это создаст новую запись в базе данных SMS с нулевым значением в столбце «адрес».

Salman

1

Это нормальное поведение. Найдено в SmsMessage documentation:

Возвращает адрес источника (отправителя) данного SMS-сообщения в Струнный форме или нулевое значение, если недоступен

Если ваше приложение ломается из-за NPE позже, вы должны вставить null проверить и установить адрес в пустую строку.

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

+0

Нулевое значение возникает во время разговора. Мы фиксируем все сообщения, и внезапно для одного сообщения оно возвращает нуль, пока остальная часть сообщений кажется прекрасной при общении только с одним человеком. – Sali

+0

Что еще может произойти, как сказано в документации. Нет решения, вы должны просто убедиться, что ваше приложение также работает с нулевым значением. – WarrenFaith

0

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