2013-06-27 3 views
3

Я разрабатываю приложение для Android, в котором хочу заменить тело сообщения из последних полученных SMS новым текстом.Как удалить последние полученные SMS из почтового ящика в Android

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

Теперь проблема, с которой я столкнулась, заключается в том, как удалить последние полученные SMS из папки «Входящие». Я разработал код в этом отношении, но удаляю second last (предыдущий) SMS из папки «Входящие». Пожалуйста, проверьте мой код ниже и помогите, чтобы я мог продолжить свое приложение, я был бы очень благодарен вам за этот акт доброты.

public void deleteLastSMS() 
    { 

//  abortBroadcast(); 

     String body = null; 
     String num = null; 

     try 
     { 
      Uri uri = Uri.parse("content://sms/inbox");   
      Cursor c =contex.getContentResolver().query(uri, null, null ,null,null); 
      if(c.moveToFirst()) 
      { 
       body = c.getString(c.getColumnIndexOrThrow("body")).toString(); 
       num = c.getString(c.getColumnIndexOrThrow("address")).toString(); 
      } 


      int id = c.getInt(0); 
      int thread_id = c.getInt(1); 
      Uri thread = Uri.parse("content://sms"); 
      contex.getContentResolver().delete(thread, "thread_id=? and _id=?", new String[]{String.valueOf(thread_id), String.valueOf(id)}); 

     } 

     catch(CursorIndexOutOfBoundsException ee) 
     { 

     } 


    } 
+0

Вы пытаетесь удалить SMS сразу после его получения? Это может быть проблема синхронизации - база данных SMS, возможно, не была обновлена, когда вы пытаетесь удалить последнее SMS. Если это не так, вы можете попробовать другие способы удаления SMS, см. Http://stackoverflow.com/questions/9389740/delete-an-sms-from-inbox –

ответ

0

Я смотрел на это, так как за последний час, это вещи я нашел далеко, хмель я помочь :)

void deleteMessage(Context context){ 
    Uri uriSms = Uri.parse("content://sms/inbox"); 
    Cursor c = context.getContentResolver().query(uriSms, null,null,null,null); 
    int id = c.getInt(0); 
    int thread_id = c.getInt(1); //get the thread_id 
    context.getContentResolver().delete(Uri.parse("content://sms/conversations/" + thread_id),null,null); 
} 

void deleteSMS(Context context){ 
    Uri deleteUri = Uri.parse("content://sms"); 
    context.getContentResolver().delete(deleteUri, "address=? and date=?", new String[] {strMessageFrom,strTimeStamp}); 
} 

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