0

連絡先に写真があるが、スタックで見つかったすべてのソリューションがうまくいかなかった場合は、クエリで確認する必要があります。

Cursor cur = this.ctx.getContentResolver().query(
            ContactsContract.Data.CONTENT_URI,
            null, ContactsContract.Data.MIMETYPE + "='"
                    + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null,
            null);

「database.sqlite.SQLiteException: no such column mimetype」のため、これは機能しません。

PHOTO_ID が 0 かどうかも確認しようとしましたが、これは決して起こりません。

写真の有無にかかわらず連絡先をフィルタリングするクエリを実行するにはどうすればよいですか?

編集:

さて、試してみて解決策を見つけました。PHOTO_IDで動作するようです

String hasPhoto = ContactsContract.Contacts.PHOTO_ID + " LIKE '%%'";
String hasNoPhoto = ContactsContract.Contacts.PHOTO_ID + " IS NULL";
4

1 に答える 1

0

メソッドに連絡先の ID を渡して、データベースで rawQuery を使用しないのはなぜですか?

public String withPhoto(int id){
SQLiteDatabase database = new SQLiteDatabase();
String column = null;

database.open();
Cursor cursor = database.rawQuery("SELECT column FROM table/content_uri WHERE PHOTO_ID IS/IS NOT NULL AND CONTACT_ID = " + id)
if(!cursor.moveToFirst()){
     cursor.moveToFirst();
     column = cursor.getString(1)
   }
  cursor.close();

  return column;
}

編集

申し訳ありませんが、独自のデータベースがあると想定していました。写真に関する情報を含むContactsContractクラスへのリンクを次に示します。

出典: Android デベロッパー

于 2013-07-19T20:06:35.470 に答える