【问题标题】:Android get contact id from thread idAndroid从线程ID获取联系人ID
【发布时间】:2014-01-08 22:24:01
【问题描述】:

我正在开发一个简单的短信应用程序,我正在使用下面的代码在加载我的线程列表时获取线程 ID,但我不知道如何使用线程 ID 获取联系人 ID。我是 root 并且使用 root explorer 我可以在数据库中看到有一个包含以下列的联系人表

thread_id | htcthread_id | contact_id

因此,由于我有线程 ID,我应该能够获取联系人 ID,但我还需要确保这适用于所有设备。顺便说一句,我的应用不是 root

获取线程ID的代码

Uri uri = Uri.parse("content://mms-sms/conversations?simple=true");
Cursor c = context.getContentResolver().query(uri, null, null, null, "date desc");
if (c.getCount() > 0) {
    while (c.moveToNext()){
        //thread id is c.getString(c.getColumnIndexOrThrow("_id"))
    }
}
c.close

【问题讨论】:

    标签: android sql sms


    【解决方案1】:

    我恢复所有联系人的解决方案:

        Cursor cursor = null;
        try {
            cursor = context.getContentResolver().query(Phone.CONTENT_URI, null, null, null, null);
            int contactIdIdx = cursor.getColumnIndex(Phone._ID);
            int nameIdx = cursor.getColumnIndex(Phone.DISPLAY_NAME);
            int phoneNumberIdx = cursor.getColumnIndex(Phone.NUMBER);
            int photoIdIdx = cursor.getColumnIndex(Phone.PHOTO_ID);
            cursor.moveToFirst();
            do {
                String idContact = cursor.getString(contactIdIdx);
                String name = cursor.getString(nameIdx);
                String phoneNumber = cursor.getString(phoneNumberIdx);
                //...
            } while (cursor.moveToNext());  
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
    

    您需要在清单中获得此权限:

    <uses-permission android:name="android.permission.READ_CONTACTS" />
    

    希望对你有所帮助!

    【讨论】:

    • 好的,但这如何回答我的问题?我不是想获取所有联系人,我只是想要基于线程 ID 的联系人信息
    猜你喜欢
    • 2012-02-21
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 2015-11-02
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多