2012-02-22 6 views
8

Me gustaría eliminar un SMS de la bandeja de entrada una vez que lo haya leído el usuario. ¿Como hacer esto?Eliminar un sms de la bandeja de entrada

Editar:

clase pública se extiende SmsReceiver 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é hay de malo con este código? El SMS no está siendo eliminada

Respuesta

12

Puede utilizar el método siguiente para borrar SMS desde la 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(); 
     } 
    } 
} 
+0

este código se elimine toda la bandeja de entrada mensajes – Erum

+0

no funciona en la versión de Android 4.3 – NarendraJi

+0

Funcionará en 5.0.? Usar el mismo código es devolver mi cursor vacío. – Akshat

10

probar esto por solución completa para borrar ...

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()); 
    } 
} 
+0

Sí, funcionó para mí. – Tomcat

Cuestiones relacionadas