短信应用——短信(会话)删除

本文介绍了如何使用Android代码删除手机中的短信对话。通过获取短信目录、遍历短信及调用特定方法,可以实现删除未读短信的功能。文章提供了详细的代码示例,并说明了必要的权限配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用过Android系统手机的朋友们相比都知道,AndroidOS的短信和iOS一样,是以会话模式展现的,这种展现方式很容易让使用者查找以前的聊天记录。

关于用代码删除短信,其实删除的也是对话,无论是最近的,还是以前的,统统都会一并删除。


下面来看那代码。

首先需要得到得到短信目录。

  1. ContentResolver cr;  
  2.     cr = getContentResolver();  


再有就是要遍历下所有短信。

  1. String SMS_READ_COLUMN = "read";  
  2. String WHERE_CONDITION = SMS_READ_COLUMN + " = 0";  
  3. String SORT_ORDER = "date DESC";  
  4. int count = 0;  
  5. Cursor cursor = cr.query(Uri.parse("content://sms/inbox"),  
  6. new String[] { "_id""thread_id""address""person""date",  
  7. "body" }, WHERE_CONDITION, null, SORT_ORDER);  
  8. if (cursor != null) {  
  9. try {  
  10. count = cursor.getCount();  
  11. if (count > 0) {  
  12. cursor.moveToFirst();  
  13. threadId = cursor.getLong(1);  
  14. }  
  15. finally {  
  16. cursor.close();  
  17. }  
  18. }  


"content://sms/inbox"就是短信的所在路径,inbox,收件箱。

上述代码可以得到最新的一条短信。


我们需要调用一下这个方法,我们可以把这个方法。


long id = getThreadId();
Uri mUri = Uri.parse("content://sms/conversations/" + id);  
这样就可以得到最新一跳短信的所对应的id了。

最后删除就可以了。

cr.delete(mUri, nullnull);  


别忘了在Manifest.xml中加入权限。
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />  


另外要强调的是,如果想要得到最新的收件箱信息,一定要重新获得id;这里的id永远是0,但是如果直接把id用0代替,那么删除的就不是最新的了。

如果想删除其他短信,只需要在遍历的时候加上条件,让返回的id是条件所对应的会话id就可以了,


还有一点要特别强调,这个方法只能删除未读的短信对话,因为他的搜索条件是inbox,当然就是收件箱了;如果读取了短信了,那么Android系统就应该认定该信息不属于收件箱了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值