1

我目前正在使用

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

4

1 回答 1

0

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

于 2012-07-03T17:38:08.490 回答