如何从CONTENT URI

时间:2018-02-23 04:28:41

标签: android contacts android-contacts android-contentresolver

我从我的应用中添加了一个自定义联系人raw(如whatsapp)。当我单击自定义原始时,它会打开我的应用程序。在我的查看活动中,我会检查操作并从getIntent().getDataString()获取内容URI。它给了我这个 - content://com.android.contacts/data/10399。 现在我想从此URI获取联系人详细信息。但是当我使用以下代码检查我的联系人列表时。

void checkContacts(Context context) {
    Cursor cursor = context.getContentResolver().query(
            ContactsContract.Data.CONTENT_URI,
            null,
            null, null, null);
    if (cursor != null) {
        Log.e(TAG, String.valueOf(cursor.getCount()));
        try {
            while (cursor.moveToNext()) {
                Log.e(TAG, cursor.getString(cursor
                        .getColumnIndexOrThrow(ContactsContract.Data.CONTACT_ID)));
                Log.e(TAG, "** " + cursor.getString(cursor
                        .getColumnIndexOrThrow(ContactsContract.Data.RAW_CONTACT_ID)));
            }
        } finally {
            cursor.close();
        }
    }
}

但我找不到与CONTACT_ID相关的任何RAW_CONTACT_ID10399。 那么如何从此URI获取联系人详细信息? 我不想得到所有联系人。我想获得与URI相关的具体联系方式。

1 个答案:

答案 0 :(得分:3)

尝试这样的事情

Uri uri = data.getData();
            String[] projection = { ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME };

            Cursor cursor = getApplicationContext().getContentResolver().query(uri, projection,
                    null, null, null);
            cursor.moveToFirst();

            int numberColumnIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
            String number = cursor.getString(numberColumnIndex);

            int nameColumnIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
            String name = cursor.getString(nameColumnIndex);
            cursor.close();