检查联系人是否在Android> 2.3.3上有照片

时间:2013-07-19 19:36:25

标签: android sql contacts photo

我需要通过查询检查,如果联系人有照片,但堆栈上找到的所有解决方案都不适合我:

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:没有这样的列mimetype”

我还试图检查PHOTO_ID是否为0,但这绝不会发生。

如何使用/不使用照片过滤联系人的查询?

编辑:

好的,通过尝试找到了解决方案。它似乎适用于PHOTO_ID

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

1 个答案:

答案 0 :(得分:0)

为什么不在数据库上使用rawQuery,将联系人的ID传递给方法?

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开发人员