web-dev-qa-db-ja.com

Android 10(loadThumbnail)でサムネイルを読み取れません)

MediaStoreにMediaStore.Images.Thumbnails.getThumbnail()を使用してクエリすることで、デバイスからサムネイルを読み取っています。ただし、これはAndroid 10(API 29))で廃止され、ContentResolver#loadThumbnailhttps://developer.Android.com/reference/Android/provider/MediaStore.Images.Thumbnails

ただし、これを機能させることはできません(API 29を実行するエミュレートされたデバイスで)。一部のJPEGをエミュレートされたデバイスにコピーしました。このデバイスは、ダウンロードフォルダーにあります。写真アプリに表示されます。次のコードでは、FileNotFoundExceptionが発生します。 「コンテンツプロバイダーなし」は実際に何を教えてくれますか?

try {

    Size thumbSize = new Size(100, 100);
    Uri thumbUri = Uri.fromFile(new File(imgPath));
    // imgPath: /storage/emulated/0/Download/pexels-photo-323490.jpeg
    // thumbUri: file:///storage/emulated/0/Download/pexels-photo-323490.jpeg

    Bitmap thumbBitmap;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        thumbBitmap = mContext.getContentResolver().loadThumbnail(thumbUri, thumbSize, null);
    } else {
        thumbBitmap = MediaStore.Images.Thumbnails.getThumbnail(mContext.getContentResolver(),
                imgId, MediaStore.Images.Thumbnails.MINI_KIND, null);
    }

    iconView.setImageBitmap(thumbBitmap);
} catch (Exception e) {
    Log.e("err", e.toString());
}

例外:

Java.io.FileNotFoundException: No content provider: file:///storage/emulated/0/Download/pexels-photo-323490.jpeg
3
joakimk

これを試してください、あなたのためにうまくいくことを願ってください:

int thumbColumn = cur.getColumnIndexOrThrow(MediaStore.Images.ImageColumns._ID); 
int _thumpId = cur.getInt(thumbColumn); 
Uri imageUri_t = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,_thumpId);

GGK

1
GGK