Eliminar un sms de la bandeja de entrada
Me gustaría borrar un SMS de la bandeja de entrada una vez que haya sido leído por el usuario. ¿Como hacer esto?
Editar:
- Habilitar el soporte de SMS en Hangouts 2.0 rompe el BroadcastReceiver de SMS_RECEIVED en mi aplicación
- Obtén todos los mensajes de WhatsApp
- Verificación del número de teléfono Android
- Intercepción de SMS de Android sin icono de notificación o mensajes WAP-PUSH
- Cómo hacer copias de seguridad de los contactos o sms en la tarjeta SD como archivo .xml o .csv y restaurarlos más tarde
Public class SmsReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String address = null; if(bundle!=null) { String info = " "; Object[] pdus = (Object[]) bundle.get("pdus"); msgs = new SmsMessage[pdus.length]; for (int i=0; i<msgs.length; i++) { msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); address=msgs[i].getDisplayOriginatingAddress(); info += msgs[i].getMessageBody().toString(); } /*String str=bundle.getString("state"); Log.v("State",str);*/ if((PhoneNumberUtils.isWellFormedSmsAddress(address))){ //set ! and address length //abortBroadcast(); Log.v("phone num","wellformed"); Uri deleteUri = Uri.parse("content://sms"); Cursor c = context.getContentResolver().query(deleteUri, null, null, null, null); while (c.moveToNext()) { try { // Delete the SMS String pid = c.getString(0); // Get id; String uri = "content://sms/conversations/" + pid; context.getContentResolver().delete(Uri.parse(uri), null, null); } catch (Exception e) { Log.v("exception","occurred"); } } } } }
}
¿Qué está mal con este código? Los SMS no se eliminan
- ¿Cómo puedo leer los mensajes SMS desde el dispositivo mediante programación en Android?
- ¿Cómo leer los últimos 3 sms de la bandeja de entrada en Android?
- Enviar SMS con Genymotion
- Enviar mensaje al usuario en WhatsApp desde mi aplicación (Android)
- ¿Cuántas columnas de base de datos asociadas a un SMS en android?
- Obtener mensajes de la bandeja de entrada desde el dispositivo Android para mostrarlo en el listview personalizado
- Android 1.5: Lectura de mensajes SMS
- Android: Enviar SMS y hacer que aparezca en la bandeja de entrada SMS?
Puede utilizar el siguiente método para eliminar SMS de Bandeja de entrada,
private void deleteMessage() { Cursor c = getContentResolver().query(SMS_INBOX, null, null, null, null); //c.moveToFirst(); while (c.moveToNext()) { System.out.println("Inside if loop"); try { String address = c.getString(2); String MobileNumber = mainmenu.getParameterData().getMobileNumber().trim(); //Log.i( LOGTAG, MobileNumber + "," + address ); Log.i( LOGTAG, c.getString(2) ); if ( address.trim().equals( MobileNumber ) ) { String pid = c.getString(1); String uri = "content://sms/conversations/" + pid; getContentResolver().delete(Uri.parse(uri), null, null); stopSelf(); } } catch (Exception e) { e.printStackTrace(); } } }
Intenta esto para una solución completa para eliminar …
public void deleteSMS(Context context, String message, String number) { try { Uri uriSms = Uri.parse("content://sms/inbox"); Cursor c = context.getContentResolver().query( uriSms, new String[] { "_id", "thread_id", "address", "person", "date", "body" }, "read=0", null, null); if (c != null && c.moveToFirst()) { do { long id = c.getLong(0); long threadId = c.getLong(1); String address = c.getString(2); String body = c.getString(5); String date = c.getString(3); Log.e("log>>>", "0>" + c.getString(0) + "1>" + c.getString(1) + "2>" + c.getString(2) + "<-1>" + c.getString(3) + "4>" + c.getString(4) + "5>" + c.getString(5)); Log.e("log>>>", "date" + c.getString(0)); if (message.equals(body) && address.equals(number)) { // mLogger.logInfo("Deleting SMS with id: " + threadId); context.getContentResolver().delete( Uri.parse("content://sms/" + id), "date=?", new String[] { c.getString(4) }); Log.e("log>>>", "Delete success........."); } } while (c.moveToNext()); } } catch (Exception e) { Log.e("log>>>", e.toString()); } }