2014-09-23 75 views
8

我想從我的android設備發送短信並從mydevice(發送郵件)中刪除它。從4.4.4刪除短信從Android(受影響的行= 0(零),刪除後)

短信保存在設備(4.4.4)中,但短信不會被我的代碼刪除。刪除行影響後= 0(零)。

我的設備vesrion是4.4.4。

在其他設備中,SMS不會被保存。爲什麼短信會保存在Android 4.4.4中?

我不想保存我發送的短信或失敗的短信(哪些沒有發送)。

請幫幫我。

我的權限

<uses-permission android:name="android.permission.SEND_SMS"/> 
<uses-permission android:name="android.permission.READ_SMS" /> 
<uses-permission android:name="android.permission.WRITE_SMS" /> 

我的代碼發送短信

SmsManager smsManager = SmsManager.getDefault(); 
smsManager.sendTextMessage(number, null, msg, null, null); 

我打電話的方法deleteSMS()的處理程序與5秒

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       String message = CastApplication.mPref.getString(context.getResources().getString(R.string.pref_message_to_friend), ""); 
       deleteSMS(context, message, number); 

       if (MyCastFragment.getInstance() != null) { 
        MyCastFragment.getInstance().updateView(); 
       } 

       progressDialog.dismiss(); 
       context.finish(); 
      } 
     }, 5000); 

刪除短信

的postdelay
public void deleteSMS(Context ctx, String message, String number) { 
     try { 
      Uri uriSms = Uri.parse("content://sms"); 
      Cursor c = ctx.getContentResolver().query(uriSms, 
       new String[] { "_id", "thread_id", "address", 
        "person", "date", "body" }, null, null, null); 

      Log.i(TAG, "c count......"+c.getCount()); 
      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 (body.contains(getResources().getText(R.string.invite_text).toString()) && address.equals(number)) { 
        if (message.equals(body) && address.equals(number)) { 
         // mLogger.logInfo("Deleting SMS with id: " + threadId); 
         int rows = ctx.getContentResolver().delete(Uri.parse("content://sms/" + id), "date=?",new String[] { c.getString(4) }); 
         Log.e("log>>>", "Delete success......... rows: "+rows); 
         Log.e("log>>>", "Delete success......... body: "+body); 
        } 
       } while (c.moveToNext()); 
      } 

     } catch (Exception e) { 
      Log.e("log>>>", e.toString()); 
      Log.e("log>>>", e.getMessage()); 
     } 
    } 
+0

你如何解決你的問題? – Erum 2015-02-10 12:01:08

+0

@ErumHannan號按照下面的答案,這是不可能的 – 2015-02-11 06:11:14

+0

我成功地刪除了我的所有收件箱郵件,你會想做同樣的事情嗎? – Erum 2015-02-11 06:31:22

回答

9

除非你的應用程序被標記爲設備的默認短信應用,你將無法與SMS提供播放,請閱讀短信準則同爲KITKAT

+0

謝謝你的回覆,你能告訴我如何將我的應用程序標記爲默認短信應用程序嗎? – 2014-09-23 07:28:53

+0

@GangadharNimbally該鏈接告訴你你需要爲你的應用程序做一個默認設置。這不是一項簡單的任務,因爲您的應用程序將負責處理它可能尚未處理的許多事情。 – 2014-09-23 08:31:13

+0

@Mike M,是否有任何示例應用程序成爲默認的短信應用程序。請分享我在android – 2014-09-23 10:39:30

-1

應用程序可以在奇巧刪除短信無授予的默認短信應用。

您只需要WRITE_SMS權限 和AppOpps操作。

之後,你的短信可以在收到10秒後刪除, 通知也將絕望。