0
我想互换两个联系人的个人资料图片而不写任何字节流!我想知道是否可以用contentResolver更新PHOTO_FILE_ID,PHOTO_ID,PHOTO_THUMBNAIL_URI和PHOTO_URI。它甚至有可能吗?交换通过contentResolver更新的两个联系人的照片
这是我试过的代码(不是可运行的,我刚才复制的总代码的某些部分): 这是我读的信息:
String[] projection = new String[]{ ContactsContract.Data._ID,
ContactsContract.CommonDataKinds.StructuredName.PHOTO_FILE_ID,
ContactsContract.CommonDataKinds.StructuredName.PHOTO_ID,
ContactsContract.CommonDataKinds.StructuredName.PHOTO_THUMBNAIL_URI,
ContactsContract.CommonDataKinds.StructuredName.PHOTO_URI};
Cursor cursor = this.contentResolver.query(ContactsContract.Data.CONTENT_URI, projection, ContactsContract.Data.MIMETYPE + " LIKE ?",
new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE }, null);
if(cursor.moveToFirst()){
long ID = cursor.getLong(cursor.getColumnIndex(
ContactsContract.Data._ID));
Integer photoFileID = cursor.getInt(cursor.getColumnIndex(
ContactsContract.CommonDataKinds.StructuredName.PHOTO_FILE_ID));
Integer photoID = cursor.getInt(cursor.getColumnIndex(
ContactsContract.CommonDataKinds.StructuredName.PHOTO_ID));
String photoThumbnailURI = cursor.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds.StructuredName.PHOTO_THUMBNAIL_URI));
String photoURI = cursor.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds.StructuredName.PHOTO_URI));
}
cursor.close();
,这是我尝试写在其他联系人信息:
ContentValues contentValues = new ContentValues();
contentValues.put(ContactsContract.CommonDataKinds.StructuredName.PHOTO_FILE_ID, photoFileID);
contentValues.put(ContactsContract.CommonDataKinds.StructuredName.PHOTO_ID, photoID);
contentValues.put(ContactsContract.CommonDataKinds.StructuredName.PHOTO_THUMBNAIL_URI, photoThumbnailURI);
contentValues.put(ContactsContract.CommonDataKinds.StructuredName.PHOTO_URI, photoURI);
String where = ContactsContract.Data._ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " LIKE ?";
String[] params = new String[] { String.valueOf(ID),
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE };
this.contentResolver.update(ContactsContract.Data.CONTENT_URI, contentValues, where, params);
如果我运行此脚本,调试器告诉我,列无效... 任何想法如何更新以另一种方式光细节?
此处也粘贴调试器输出。它会帮助其他人了解问题。 – noob