从内容解析器(收件箱邮件)获取筛选结果时出现问题

时间:2011-07-19 12:21:30

标签: android sqlite

我正在尝试根据存储在另一个表中的邮件ID使用ContentResolver获取所有收件箱邮件..

我想要排除其邮件ID不在我的自定义表格中的所有收件箱短信(spam_msgids)。

我在做什么(我不知道这是否正确):

Uri uriSms=Uri.parse("content://sms/inbox");
Cursor cursor = context.getContentResolver().query(uriSms, null,"_id NOT IN (SELECT msg_id FROM spam_msgids)",null,null);

但是它已经创建了一个错误,但是已经创建了 ...

Error : 07-19 17:04:16.412: ERROR/DatabaseUtils(141): 
android.database.sqlite.SQLiteException: no such table: spam_msgids: , while compiling: SELECT * FROM sms WHERE (type=1) AND (_id NOT IN (SELECT msg_id FROM spam_msgids)) ORDER BY date DESC

有人可以告诉我哪里出错了吗?

2 个答案:

答案 0 :(得分:1)

您正在从android内部数据库查询,当然数据库不包含spam_msgids

答案 1 :(得分:1)

您可以从您的数据库中获取所有ID,构建一个逗号分隔的字符串并将其传递给NOT IN,以便它看起来像:

Cursor cursor = context.getContentResolver().query(uriSms, null,"_id NOT IN (" + stringOfCommaSeparatedStringOfIDs + ")",null,null);