1

Android のドキュメントから、ContactsContract.Contacts.Data.CONTENT_DIRECTORY 文字列を ContactsContract.Contacts.CONTENT_URI に追加して、Contact のフィールドと Data のフィールドの両方にアクセスできることがわかりました。残念ながら、このコードで例外が発生しています

Cursor cursor = context.getContentResolver().query(
    Uri.withAppendedPath(Contacts.CONTENT_URI, Contacts.Data.CONTENT_DIRECTORY), 
    null, null, null, null);

私が得る例外は次のとおりです。

java.lang.IllegalArgumentException: URI: content://com.android.contacts/contacts/data, calling user: ...

私は何を間違っていますか?注:Android 2.1を使用しています

4

1 に答える 1

1

ドキュメントで明確にされていないのは、 ContactsContract.Contacts.Data が、単一の contact の結合された Contacts および Data テーブルにアクセスするためのものであることです。連絡先 ID または検索キーが表示されることを期待しています。私はいたるところを見てきましたが、現在、連絡先とデータ テーブルを結合する方法はありません。うまくいけば、彼らはこれに対するサポートを追加します。完全なテーブルを結合するための唯一の公開された API は RawContactsEntity のようです (この点で RawContacts.Entity とは異なります)。

したがって、私の知る限り、類似点は次の
とおりです。RawContacts.EntityはContacts.Data
にあり、RawContactsEntityは何もありません。

Android は、RawContacts だけでなく、完全なテーブル結合のサポートを追加する必要があります

于 2011-06-03T15:03:09.530 に答える