0

タイトルに記載されているように、電話番号を指定したすべての連絡先を照会し、連絡先の表示名と会社名のみを含むカーソルを返したいと考えています。連絡先ごとに 1 行だけ返してほしい。

これが私がこれまでに思いついたものです:

Cursor contactsCur = getContentResolver().query(
        ContactsContract.Data.CONTENT_URI,
        new String[] {ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Organization.COMPANY},
        ContactsContract.Contacts.HAS_PHONE_NUMBER + " >? AND " + Contacts.Data.MIMETYPE + " =? " ,
        new String[] {"0", ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE},
        null );

これにより、電話番号と会社の両方が指定されている連絡先ごとに 1 行が返されます。会社が指定されていない連絡先は含まれません。

その理由はわかっていAND " + Contacts.Data.MIMETYPE + " =? "ます。クエリのビットにより、会社のない連絡先が返されなくなります。問題は、このAND部分がないと、連絡先ごとに複数の行が返されることです。

これは、ContactsContract.CommonDataKinds.Organization.COMPANY実際にはContactsContract.Contacts.Data.DATA1汎用フィールドである を参照しているためと思われます。

これに関するヘルプは大歓迎です!

4

1 に答える 1

0

これには複数のクエリを使用することになりました

于 2012-08-05T14:10:38.080 に答える