2015-11-07 70 views
3

我正在删除特定的短信的电话号码task.when我在motog或android版本5.0的mobile.I测试我不能删除特定号码的短信。我的代码片段below.please帮助我。如何删除android版本5.0 lolipop或Kitkat中的特定收件箱消息?

public void deleteSMS(Context context,String number) { 
    try { 
     Log.d("","Deleting SMS from inbox"); 
     Uri uriSms = Uri.parse("content://sms/inbox"); 
     Cursor c = context.getContentResolver().query(uriSms, 
       new String[] { "_id", "thread_id", "address", 
         "person", "date", "body" }, "address = '"+number+"'", 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); 
       Toast.makeText(getApplicationContext(),"SMS with id: " + threadId +" Number:- " +address,Toast.LENGTH_LONG).show(); 
       Log.d("", "SMS with id: " + threadId +" Number:- " +address); 
       if (address.equals(number)) { 
        Log.d("", "Deleting SMS with id: " + threadId); 
        context.getContentResolver().delete(
          Uri.parse("content://sms/" + id), null, null); 
       } 
      } while (c.moveToNext()); 
     } 
    } catch (Exception e) { 
     Toast.makeText(getApplicationContext(),"Could not delete SMS from inbox ",Toast.LENGTH_LONG).show(); 
     Log.e("", "Could not delete SMS from inbox: " + e.getMessage()); 
    } 
} 

你的回答将不胜感激

+1

您的应用程序是默认的短信应用程序吗?否则,它不具有对提供者的标准写入权限。 –

+0

我想按照上面的代码以编程方式删除手机收件箱中的短信。它适用于4.4以下的Android版本,但它不适用于4.4以上的版本。 – Vasant

+1

看看下面的博客页面。它应该解释为什么它在这些版本中不起作用。 [让您的短信应用程序准备好迎接KitKat](http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html?m=1) –

回答

7

4.4后,您不允许从收件箱中删除任何短信,除非你的应用程序是“默认的短信应用”

开始通过Android 4.4,系统设置允许用户选择“默认短信应用”。一旦选定,只有默认的SMS应用程序能够写入SMS提供程序,并且只有默认的SMS应用程序在用户收到SMS时收到SMS_DELIVER_ACTION广播,或者当用户收到MMS时收到WAP_PUSH_DELIVER_ACTION广播。默认的SMS应用程序负责在收到或发送新消息时向SMS提供程序写入详细信息。

没有被选定为默认的短信应用

其他应用程序只能读取 SMS提供 ...

You can see More info here 刚才提到以下重要组成部分:

如果您应用程序被设计为表现为默认的短信应用程序,然后当您的应用程序未被选为默认应用程序时,重要的是您应该了解对应用程序的限制并根据需要禁用功能。虽然系统会在您的应用不是默认的短信应用时将已发送的短信写入短信服务提供商,但它不会写入已发送的短信,而且您的应用无法写信给短信服务提供商进行其他操作,例如将短信标记为草稿,将它们标记为已读,删除它们等。

相关问题