Android Contact phone number using Loader Invalid column data1

后端 未结 3 1899
日久生厌
日久生厌 2021-01-14 00:14

I used to use content resolver previously to fetch Contact list and their details while that still works I wanted to try the Loader method which queries the Content Provider

3条回答
  •  旧时难觅i
    2021-01-14 00:46

    Change Your Query URI.

    You are using a URI that is not meant for searching/filtering those columns (e.g. phone numbers) on Contacts:

    You need to use a URI that has access to the columns you're trying to filter on, like this:

    Uri uri = ContactsContract.Data.CONTENT_URI;
    

    Or maybe this one since you're searching phone numbers:

    Uri uri = ContactsContract.PhoneLookup.CONTENT_FILTER_URI;
    

    There's a decent breakdown of what URIs to use and when on the Android SDK Documentation:

    • If you need to read an individual contact, consider using CONTENT_LOOKUP_URI instead of CONTENT_URI.

    • If you need to look up a contact by the phone number, use PhoneLookup.CONTENT_FILTER_URI, which is optimized for this purpose.

    • If you need to look up a contact by partial name, e.g. to produce filter-as-you-type suggestions, use the CONTENT_FILTER_URI URI.

    • If you need to look up a contact by some data element like email address, nickname, etc, use a query against the ContactsContract.Data table. The result will contain contact ID, name etc.

提交回复
热议问题