我目前正在使用
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")
将获得短信的号码。然后它将放置在getContactName()
从联系人列表中获取联系人姓名的位置。
此方法将花费很长时间,因为它会通过每条短信,获取号码,然后获取联系人的姓名,检查姓名是否存在于数组中,如果它没有放入数组中,则从那里创建一个 ListView。
如果用户的收件箱包含大量文本,则应用程序在启动时将需要很长时间才能加载。
有什么特殊方法可以从收件箱中获取唯一号码吗?里面的东西cr.query
?
提前致谢。(:
编辑 :
我正在创建一个简单的收件箱应用程序。它从原始收件箱消息中读取并列出其中的消息。
对于这个项目,我所做的是通读所有“地址”,即电话号码,将其放入 ArrayList,最后放入 ListView。当它循环浏览收件箱中的所有消息时,启动需要很长时间。
例如 :
收件箱消息
人 1
人 1
人 1
人 2
人 2
人 3
人 3
人 3
人 3
我当前的代码做了什么:
阅读每一条消息
检查名称是否在 ArrayList
如果是,请跳过。如果没有,请添加数组。
将 ArrayList 扔到 ListView 中。
我的意图是:
仅读出的代码:
人 1
人 2
人 3