Android: NULL String Problema para la columna 'Dirección' para el proveedor de contenido de SMS

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

  •  26-10-2019
  •  | 
  •  

Pregunta

Estoy trabajando en una aplicación de Android que lee el SMS del proveedor de contenido. La aplicación funciona bien y lee SMS Fine del proveedor de contenido. Pero en algún momento (muy raro) la columna 'Dirección' devuelve NULL para el mensaje SMS.

Aquí está el código de muestra lo que estoy 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());
    }

Estoy obteniendo este problema en Motorola diod Android v2.3.5. Por favor avise.

Ali

¿Fue útil?

Solución

Encontré el problema. El sistema operativo Android guarda el mensaje como borrador en el proveedor de contenido SMS, si comienza a escribir y luego cierre la aplicación SMS (debido a una llamada entrante o cualquier otro motivo). Esto genera una nueva entrada en la base de datos SMS con un valor nulo en la columna 'Dirección'.

Salman

Otros consejos

Este es un comportamiento normal. Encontrado en el Documentación de smsmessage:

Devuelve la dirección de origen (remitente) de este mensaje SMS en forma de cadena o nulo si no está disponible

Si su aplicación se rompe debido a un NPE más tarde, debe insertar una verificación nula y establecer la dirección en una cadena vacía.

Un consejo: una pregunta debe hacer algo y debe proporcionar un rastro de pila si tiene un error.

Esto puede suceder en caso de número enmascarado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top