Puedo capturar sms, puedo ver el teléfono del remitente, el cuerpo, puedo abortarBroadcast si no me gusta este sms, pero no sé cómo marcar este sms como leer, ese usuario puede leer en el cuadro más tarde. ¿Alguna idea de cómo puedo hacer esto?Android: cómo marcar sms como leído enRecibir
Respuesta
Esto podría ayudarle a:
private void markMessageRead(Context context, String number, String body) {
Uri uri = Uri.parse("content://sms/inbox");
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
try{
while (cursor.moveToNext()) {
if ((cursor.getString(cursor.getColumnIndex("address")).equals(number)) && (cursor.getInt(cursor.getColumnIndex("read")) == 0)) {
if (cursor.getString(cursor.getColumnIndex("body")).startsWith(body)) {
String SmsMessageId = cursor.getString(cursor.getColumnIndex("_id"));
ContentValues values = new ContentValues();
values.put("read", true);
context.getContentResolver().update(Uri.parse("content://sms/inbox"), values, "_id=" + SmsMessageId, null);
return;
}
}
}
}catch(Exception e)
{
Log.e("Mark Read", "Error in Read: "+e.toString());
}
}
No creo que haya ningún apoyo oficial para esto, pero esta pregunta proporciona un método de hacerlo (no lo he probado sin embargo): Mark MMS as read programmatically
idea equivocada, sms que capto en OnReceive no está en "contenido: // SMS" –
@ Andrew-Debe ser "contenido: // SMS/bandeja de entrada" .. –
Una respuesta se ha dado aquí: Set sms as read in Android
ContentValues values = new ContentValues();
values.put("read",true);
getContentResolver().update(Uri.parse("content://sms/inbox"),values,
"_id="+SmsMessageId, null);
donde "_id" es el ID del mensaje
Editado, gracias NilayOnAndroid!
Debe ser contenido" : // sms/inbox ".. –
Dado que Android 4.4 KitKat la única aplicación puede modificar los datos de SMS - SMS-aplicación que se establece de forma predeterminada
únicamente la aplicación que recibe la emisión SMS_DELIVER_ACTION (la aplicación de SMS predeterminada por el usuario) puede escribir al proveedor de SMS definido por la clase android.provider.Telephony y las subclases
Más información se puede encontrar aquí: http://android-developers.blogspot.ru/2013/10/getting-your-sms-apps-ready-for-kitkat.html
Hice un workarround para las versiones más nuevas que KitKat, de la respuesta here: si hay mensajes para leer, cuando el usuario abandona la aplicación, inicie la aplicación de SMS con el número que yo quiero mensajes para marcar leer. Esto marcará automáticamente todos los mensajes como leídos.
@Override
public void onBackPressed() {
if (toBeRead) {
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", smsNumber);
//smsIntent.putExtra("sms_body","Body of Message");
startActivity(smsIntent);
toBeRead = false;
}
}
- 1. Establecer sms como leído en Android
- 2. Google Reader Api marcar todos como elemento como leído
- 3. Procmail: mover a la carpeta y marcar como leído
- 4. ¿Cómo analizar los SMS entrantes en Android?
- 5. ¿Cómo puedo marcar un elemento como leído con Google Reader API (utilizando Python)
- 6. ¿Cómo se marca como leído con Pop3?
- 7. android: ¿cómo puedo marcar mi aplicación como depurable?
- 8. Clase 0 SMS (SMS flash) en Android
- 9. Marcar como obsoleto
- 10. Contenido de Android SMS (contenido: // sms/enviado)
- 11. Enviando SMS en Android
- 12. ¿Cómo marcar una clase como Deprecated?
- 13. ¿Cómo marcar un conjunto .net como seguro?
- 14. ¿Cómo marcar código como estable usando Composer?
- 15. Cómo abrir un SMS específico en android
- 16. Android 1.5: leer mensajes SMS
- 17. SMS raw pdu en Android
- 18. Eliminar SMS en Android 1.5
- 19. Android - recibir SMS largos (multiparte)
- 20. Android enviando muchos mensajes SMS
- 21. Enviando un SMS en Android
- 22. Android - Escuchar mensajes SMS entrantes
- 23. android - constantes de tipo sms
- 24. Detección silenciosa de Sms android
- 25. Cualquier SMS API está disponible para Android para enviar SMS desde la aplicación de Android?
- 26. Marcar datos como sensibles en python
- 27. Android: el DDMS muestra el mensaje: logcat leído: argumento inválido
- 28. Informe de entrega de SMS en Android
- 29. Android: detectar SMS saliente, cuenta incorrecta
- 30. android: registrar la aplicación para recibir sms
¿Es esto leer todos los mensajes en el recuadro o en uno particular – Prasad
No, solo un mensaje en particular con _id = SmsMessageId –
El resultado de la consulta de actualización es 0. Cuál es la razón detrás de esto ? –