我目前正在使用
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上。当它遍历收件箱中的所有消息时,需要很长时间才能启动。
例如:
收件箱信息
当前代码所做的工作:
读每一条信息
检查ArrayList中的名称
如果是的话,斯基普。如果没有,则添加数组。
把ArrayList扔进ListView。
我的意图是:
只读出以下内容的代码:
人1
人2
人3
发布于 2012-07-03 17:38:08
在投影中只使用"address“(意思是,甚至不包括"_id") --我不确定这一点,但这可能会解决问题。
https://stackoverflow.com/questions/11314093
复制相似问题