【Android】短信应用——短信(会话)删除

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

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


下面来看那代码。

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

	ContentResolver cr;
		cr = getContentResolver();


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

String SMS_READ_COLUMN = "read";
String WHERE_CONDITION = SMS_READ_COLUMN + " = 0";
String SORT_ORDER = "date DESC";
int count = 0;
Cursor cursor = cr.query(Uri.parse("content://sms/inbox"),
new String[] { "_id", "thread_id", "address", "person", "date",
"body" }, WHERE_CONDITION, null, SORT_ORDER);
if (cursor != null) {
try {
count = cursor.getCount();
if (count > 0) {
cursor.moveToFirst();
threadId = cursor.getLong(1);
}
} finally {
cursor.close();
}
}


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

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


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

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

最后删除就可以了。

		cr.delete(mUri, null, null);

别忘了在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系统就应该认定该信息不属于收件箱了。




Demo下载:http://download.csdn.net/detail/etzmico/3975576

你可能感兴趣的:(thread,android,Date,String,null,sms)