获取收件箱/发件箱中的电话号码

时间:2012-07-03 15:20:57

标签: 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 (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人

1 个答案:

答案 0 :(得分:0)

尝试仅在投影中使用“地址”(这意味着,甚至不包括“_id”) - 我不确定这一点,但它可以解决这个问题。