4

ネイティブの Android 連絡先を挿入、更新、および削除するためだけに、1 つのサンプル アプリケーションに取り組んでいます。連絡先を正常に挿入、更新、および削除できます。しかし、連絡先の写真を更新する際の問題。以下の画像は、同じ連絡先が 2 つの異なる問題を抱えている観察結果です。 図1 図2

連絡先を更新した後、最初の画像にはまだ古い画像が表示されています。しかし、完全な詳細を表示すると、2 番目の画像に示すように、新しく更新された連絡先の画像を表示できます。以下は、連絡先画像を更新するためのコードです。

 mBitmap =getAllowedPhotoBitmap(photo);
 mBitmap = ThumbnailUtils.extractThumbnail(mBitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE);
 ByteArrayOutputStream stream = new ByteArrayOutputStream();
    if(mBitmap!=null){    // If an image is selected successfully
        mBitmap.compress(Bitmap.CompressFormat.PNG ,100, stream);
      op = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
      op.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " +               ContactsContract.Data.MIMETYPE + "=?", new String[{String.valueOf(native_contactid), ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE});
     op.withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, stream.toByteArray());
     ops.add(op.build());
}

何が問題で、どこが間違っているのですか?

4

2 に答える 2

1

これを行うオープン ソース アプリは次のとおりです

于 2012-12-21T13:07:57.177 に答える
0

このファイルは、連絡先 ID を使用して連絡先の画像を設定するのに役立ちます

https://github.com/heinrisch/Contact-Picture-Sync/blob/master/src/heinrisch/contact/picture/sync/ContactHandler.java

void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        // Check for the request code, we might be usign multiple
        if (requestCode == PICK_CONTACT_REQUEST) {
            Uri contactUri = data.getData();                
            String[] projection = {Phone.CONTACT_ID,Phone.NUMBER,ContactsContract.Data.RAW_CONTACT_ID,ContactsContract.Data._ID };
            Cursor cursor = getContentResolver().query(contactUri, projection, null, null, null);
            cursor.moveToFirst();

            int columcontactID = cursor.getColumnIndex(Phone.CONTACT_ID);
            String contactID = cursor.getString(columcontactID);

            Bitmap item = (imgBg.getVisibleRectangleBitmap());

            setContactPicture(AtWallpaperDetails.this, contactID, item);
        }
    }
}
于 2015-11-17T08:50:23.327 に答える