我目前正在使用
ContentResolver cr = getContentResolver();
Uri uri = Uri.parse("content://sms/");
Cursor messagesCursor = cr.query(uri, new String[] { "_id", "address", "body", "person" }, null, null, null);
if (messagesCursor.getCount() > 0) {
while (messagesCursor.moveToNext()) {
colName = getContactName(messagesCursor.getString(messagesCursor.getColumnIndex("address"))) + "\n";
}
}
获取用户收件箱中的所有文字。从那里,messagesCursor.getColumnIndex("address")
将获得SMS的号码。然后它将放在getContactName()
中,然后它将从联系人列表中获取联系人的姓名。
这个方法需要很长时间,因为它通过每个单个文本消息,获取数字,然后获取联系人的名称,检查名称是否存在于数组中,如果它没有放入数组然后从那里创建一个ListView。
如果用户的收件箱中包含大量文字,则启动时该应用会加载很长时间。
是否有任何特殊方法可以从收件箱中获取UNIQUE号码? cr.query
中有什么东西?
提前致谢。(:
编辑:
我正在创建一个简单的收件箱应用程序。它从原始收件箱中读取消息并列出其中的消息。
对于这个项目,我所做的是读取所有“地址”,即电话号码,将其放入ArrayList,最后读取到ListView。当它循环显示收件箱中的所有消息时,启动需要很长时间。
例如:
收件箱消息
第1人
第1人
第1人
第2人
第2人
第3人
第3人
第3人
第3人
我目前的代码所做的事情:
阅读每条消息
检查ArrayList中的名称是否
如果是,请跳过。如果没有,请添加数组。
将ArrayList放入ListView。
我的意图是什么:
只能读出的代码:
第1人
第2人
第3人
答案 0 :(得分:0)
尝试仅在投影中使用“地址”(这意味着,甚至不包括“_id”) - 我不确定这一点,但它可以解决这个问题。