두 연락처의 프로필 사진을 서로 바꿔야합니다 bytestreams을 작성하지 않고! contentResolver를 사용하여 PHOTO_FILE_ID, PHOTO_ID, PHOTO_THUMBNAIL_URI 및 PHOTO_URI를 업데이트 할 수 있는지 궁금합니다. 심지어 가능할까요? 이것은 내가 정보를 알아볼 방법입니다 :스왑 contentResolver 업데이트를 통해 두 연락처의 사진
이 내가 노력 코드 (runable하지, 난 그냥 전체 코드의 일부를 복사)입니다
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