2011-10-31 77 views
0
@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle bundle = intent.getExtras(); 
    SmsMessage[] msgs = null; 

    if (bundle != null) { 
     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]); 
      if (msgs[i].getOriginatingAddress().equals(
        SmsModuleActivity.number)) 
       deleteMessage(context, msgs[i]); 
     } 
    } 
} 

private void deleteMessage(Context context, SmsMessage msg) { 
    Uri deleteUri = Uri.parse("content://sms/inbox/"); 
    Cursor c = context.getContentResolver().query(deleteUri, null, null, 
      null, null); 
    while (c.moveToNext()) { 
     try { 
      String pid = c.getString(0); 
      String uri = "content://sms/inbox/" + pid; 
      ContentValues values = new ContentValues(); 
      values.put("read", true); 
      context.getContentResolver().update(Uri.parse(uri), values, 
        null, null); 
      context.getContentResolver().delete(Uri.parse(uri), null, null); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

新的传入短信未删除。当我从这个号码中得到短信时,它只从这个发送者那里删除旧的短消息,但是没有新的消息。我需要从具体的数字(见的源代码。)删除新的输入消息删除传入的短信

回答

3

可以代替deleteMessage(context, msgs[i])使用abortBroadcast()将停止进入SMS到达收件箱,你不那么就不需要删除它。

+0

不,我需要删除新的传入短信但它不会删除它从这个数字中只删除旧短信。 – user1021984

+0

在第一篇文章中有一些效果。 – user1021984

3

试试这个代码:

int id = cursor.getInt(cursor.getColumnIndex("_id")); 
getContentResolver().delete(Uri.parse("content://sms/"), "_id="+id, null); 
+0

在第一篇文章中有一些影响。 – user1021984

+0

我不这么认为。它应该工作正常。 –

+0

这不是删除新的传入短信:( – user1021984

0

使用此代码删除您的第一个活动课中的短信后最后的短信。不要忘记 原谅短信在您的主要文件中读取和写入权限。

Uri uriSms = Uri.parse("content://sms/"); 
      Cursor c = getContentResolver().query(uriSms, 
       new String[] { "_id", "thread_id", "address","person", "date", "body" }, null, null, null); 
      if (c != null && c.moveToFirst()) { 

        long id = c.getLong(0); 
        getContentResolver().delete(Uri.parse("content://sms/" + id), null, null); 

      }`enter code here`