私は電話帳アプリを開発しています。連絡先の画像を取得しようとしています。最初はすべての連絡先を取得してから、それぞれのcontact_idを取得し、写真を取得するために写真テーブルのクエリを実行しました。しかし、それは写真のためにすべての連絡先を照会することを永遠に取っています。私のエミュレータでは1000人以上の連絡先があるので、写真のテーブルには1000以上のヒットが発生しています。ですから、2つのテーブルを結合して1つのクエリでデータを取得する方法はありますか?Androidで連絡先と写真のテーブルに参加する
以下は私のコードです。しかし、私は間違いを知っています。ちょうどそれを撃った。誰か是正してください。
String[] projection = new String[]{Contacts._ID, Contacts.DISPLAY_NAME};
String joinCondition = "ContactsContract.Contacts._ID=ContactsContract.CommonDataKinds.Photo.CONTACT_ID";
ContentResolver cr = context.getContentResolver();
Uri contactUri = ContactsContract.Contacts.CONTENT_URI;
Uri fillUri = Uri.withAppendedPath(contactUri, Contacts.Photo.CONTENT_DIRECTORY);
Cursor cur = cr.query(contactUri, projection,
joinCondition, null, Contacts.DISPLAY_NAME);
Thxを!ラフール 。
私が間違っていない場合は、結果から写真のURIを使用して写真テーブルへのクエリを実行する必要があります。私が始めた場所。 – rahul
サムネイルURIを取得したら、サムネイルを表示するようにイメージビューを設定するだけで済みます。それはあなたが探しているものではありませんか? – Asahi
私はサムネイルuriを取得することに同意します。しかしもう一度、実際のBLOBを取得するためにopenContactPhotoInputStream()を呼び出したり、クエリを使用したりする必要があります。これは動作していますが、起動するクエリが1000を超えるため、時間がかかることがあります。一度にすべての写真を取得する方法はありますか? – rahul