Удаление смс из папки «Входящие»

Я хотел бы удалить SMS из папки «Входящие», как только он будет прочитан пользователем. Как это сделать?

Редактировать:

Открытый класс 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"); } } } } } 

}

Что не так с этим кодом? Смс не удаляется

Вы можете использовать следующий метод для удаления SMS из папки «Входящие»,

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

Попробуйте это для полного решения для удаления …

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