0

次のように ContactsContracts.Contacts.PHOTO_ID を使用して画像を取得しました。

      public Bitmap getBitmapFromId(Uri contactUri)
{
    Bitmap bitmap=null;
    String[] projection={ContactsContract.Contacts._ID,ContactsContract.Contacts.PHOTO_ID};
    Cursor c=getContentResolver().query(contactUri, projection, null, null, null);
    if(!isCursorBad(c))
    {
        int photo_id=c.getInt(c.getColumnIndex(ContactsContract.Contacts._ID));
        Log.d(TAG, "The photo id is "+photo_id);
        Cursor c2=getContentResolver().query(ContactsContract.Data.CONTENT_URI, new String[]{ContactsContract.CommonDataKinds.Photo.PHOTO}, ContactsContract.Data.CONTACT_ID+"=?"+" AND "+ContactsContract.Data.MIMETYPE+"=?", new String[]{String.valueOf(photo_id),ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE}, null);
        if(!isCursorBad(c2))
        {
            byte[] data=c2.getBlob(0);
            Log.d(TAG, "Got byte data of length "+data.length);
            bitmap=BitmapFactory.decodeByteArray(data, 0, data.length);
        }
    }   
    return bitmap;
}

これは画像のサムネイルのみを返します。PHOTO_ID列を使用してフルサイズの画像を取得するにはどうすればよいですか?

注: 次のことがわかりました。

    PHOTO_URI              API LEVEL 11
    PHOTO_THUMBNAIL_URI    API LEVEL 11
    PHOTO_FILE_ID          API LEVEL 14
    PHOTO_ID               API LEVEL 05 

したがって、PHOTO_ID の選択 (API レベル 10 以上を対象とする)。

ContactsProvider 迷路からフルサイズの画像を取得する方法はありますか?

4

1 に答える 1

0

次のコードを使用してフルサイズの写真を取得できますが、Android 2.3.3 (Gingerbread) でテストしたところ、これが機能しないことがわかりました。これについては完全にはわかりませんが、Gingerbread ではサムネイル サイズの写真しか許可されていないのではないかと思います (フル サイズではありません)。

final Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
final Uri photo = Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.DISPLAY_PHOTO);
于 2014-02-06T07:33:42.417 に答える