2010-09-15 14 views

Respuesta

40

Es necesario ejecutar una consulta simple a SMS ContentProvider. Aquí está un ejemplo de trabajo:

final Uri SMS_INBOX = Uri.parse("content://sms/inbox"); 

Cursor c = getContentResolver().query(SMS_INBOX, null, "read = 0", null, null); 
int unreadMessagesCount = c.getCount(); 
c.deactivate(); 

Usted también necesitará el permiso READ_SMS:

<uses-permission android:name="android.permission.READ_SMS" /> 

Tenga en cuenta que el proveedor de contenidos SMS no es en realidad parte del SDK, y este código no es garantizado para trabajar en todos los dispositivos pasados, presentes y futuros.

+6

Nota: esto requiere el permiso READ_SMS! –

+6

getContentResolver() debe invocarse desde un contexto existente. Para cualquier persona en el futuro que venga aquí por una respuesta, la sintaxis correcta es 'Cursor c = context.getContentResolver()' – bkaiser

+0

¿puedo recibir mensajes no leídos que hemos recibido en la última hora? –

1

La forma más sencilla descubrí:

Cursor c = getContentResolver().query(
    Uri.parse("content://sms/inbox"), 
    new String[] { 
     "count(_id)", 
    }, 
    "read = 0", 
    null, 
    null 
); 
c.moveToFirst(); 
int unreadMessagesCount = c.getInt(0); 
+0

¿Puedo recibir mensajes no leídos que recibimos en la última hora? –

Cuestiones relacionadas