如何从线程表中的recepient_ids获取联系人详细信息

时间:2011-10-23 05:32:48

标签: android sqlite cursor android-contentprovider

这是'threads'表格实例

_id| recipient_ids| snippet
1  |   1          |Hi this is hello world
2  |   2          |Multiple send
3  | 1 3 4        |Send

与recepient_ids对应的值放在'canonical_addresses'表中

_id|  address
1  |9879565655
2  |1111111111
3  |5465321348
4  |8965321354

现在我必须为线程表中的每个'threads.recipient_ids'获取'canonical_addresses.address'(有时,recipient_id可以多于一个)?

注意: 我正在使用content://mms-sms/conversation从线程表中获取详细信息。

3 个答案:

答案 0 :(得分:2)

您需要按照以下方式制定查询:

String [] colAddress={"DISTINCT address"};
Cursor cur = getContentResolver().query(uriSMSURI, colAddress, null, null,null);

答案 1 :(得分:1)

我无法找到直接的解决方案。

确实,为了获取收件人详细信息,请使用线程ID查询Content://sms/

从光标中选择不同的地址。

我们将能够获取收件人的详细信息。

为了更有效地回应它。

摘录如下

Uri THREAD_ID_CONTENT_URI = Uri.parse("content://sms/");

Cursor cur = getContentResolver().query(uribuilder.build(), new String[]{"address"},"thread_id=#) group by (address", null,null);

谢谢你

答案 2 :(得分:0)

使用此uri获取

ContentResolver cr = context.getContentResolver();
    Cursor pCur = cr.query(
            Uri.parse("content://mms-sms/canonical-addresses"), new String[]{"address"},
            "_id" + " = ?",
            new String[]{your_thread_id}, null);

    String contactAddress = null;

    if (pCur != null) {
        if (pCur.getCount() != 0) {
            pCur.moveToNext();
            contactAddress = pCur.getString(pCur.getColumnIndex("address"));
        }
        pCur.close();
    }