Android 正在收件箱/发件箱中获取电话号码
我目前正在使用Android 正在收件箱/发件箱中获取电话号码,android,Android,我目前正在使用 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
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(“地址”)
将获得短信号码。然后它将被放置在getContactName()
中,然后从联系人列表中获取联系人的姓名
此方法将花费很长时间,因为它会遍历每一条文本消息,获取号码,然后获取联系人的姓名,检查姓名是否存在于数组中,如果未放入数组中,则从此处创建ListView
如果用户的收件箱中包含大量文本,则在启动时加载应用程序需要很长时间
有没有什么特别的方法可以从收件箱中获取唯一的号码?cr.query
中的某些内容
提前谢谢
编辑: 我正在创建一个简单的收件箱应用程序。它读取原始收件箱消息并列出其中的消息 对于这个项目,我所做的是通读所有的“地址”,即电话号码,将其放入ArrayList,最后进入ListView。当它循环浏览收件箱中的所有消息时,启动需要很长时间 例如: 收件箱消息
- 第一人 第一人 第一人 第二人 第二人 第三人 第三人 第三人 第三人
我当前代码的功能: 阅读每一条信息 检查ArrayList中的名称是否正确 如果是,则跳过。如果不是,则添加到数组中 将ArrayList放入ListView
我的意图是: 仅读取以下内容的代码: 第一人 第二人
第三个人试着在投影中只使用“地址”(也就是说,甚至不包括“\u id”)-我不确定这一点,但它可能会解决这个问题。这只是一个查询,需要在该查询中获取sms。我需要一个类似
UNIQUE
或DISTINCT
的查询。你知道怎么做吗?谢谢。对不起,我不明白。只要你使用ContentProviderUNIQUE
或DISTINCT
ode>(您可以直接打开db文件,但这将是一个肮脏的攻击,因为无法保证它在所有设备上都有相同的路径)。你能澄清一下你愿意实施的方案吗?我们很有可能想出一种不使用UNIQUE
的方法。我在第一篇文章中编辑并解释了我的意图。希望你明白我的意思。提前感谢你的帮助!非常感谢。(:等一下,我现在有很多事情要做,我稍后会回来看看。@IvanBartsov我已经等了一年多了Ivan!