Android 연락처 이미지 업데이트 실패 문제

5160 단어 Android 확장
스스로 연락처 이미지를 업데이트하는 것은 자주 연락처 이미지를 업데이트하는 데 실패하는 문제에 부딪힌다
현상: 연락처 이미지 필드에 이미지 데이터를 저장하면 정상적으로 업데이트할 수 있고 현재 수정된 연락처 이미지가 존재하지 않으면 업데이트에 실패할 수 있습니다.
원인: 연락처에 이미 연락처 이미지가 존재할 때 연락처 이미지를 저장하는 이진 필드가 자리를 차지한다. 즉, 데이터베이스에 이미 이 기록이 존재한다는 것을 의미한다.
getContent Resolver()를 호출하기만 하면 됩니다.업데이트 () 방법으로 이미지를 업데이트합니다. 연락처 이미지가 존재하지 않으면 사용자가 이미지를 추가하려면 호출해야 합니다
getContentResolver().insert      ;
      :
String phoneWhere = ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId;
        Cursor phoneCursor = mView.getCtx().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, phoneWhere , null, null);
        if(phoneCursor.moveToNext()){
            Long photoId = phoneCursor.getLong(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_ID));
            if(bm != null){
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
                byte[] data = baos.toByteArray();
                //  
                if(photoId > 0){
                    values.clear();
                    values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, data);
//            values.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
                    String wherebm =
                            ContactsContract.Data.RAW_CONTACT_ID + "=? AND " + ContactsContract.Data.MIMETYPE + "=? ";
                    //rawContactsId -> contactId
                    String[] selectionArgsbm = new String[]{rawContactsId, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE};
                    int id = mView.getCtx().getContentResolver().update(ContactsContract.Data.CONTENT_URI, values, wherebm,
                            selectionArgsbm);
                }else{
                    //  
                    //       
                    values.clear();
                    values.put(ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactsId);
                    values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, data);
                    values.put(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
                    mView.getCtx().getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
                }
            }
        }

좋은 웹페이지 즐겨찾기