Android 应用程序资源加载:IOException:找不到资源

问题描述 投票:0回答:1

当我尝试加载 bimpap 图像时收到 IOException。 Android Studio 能够解析图像。 我在应用程序开发方面没有太多背景,所以我可能缺少一些基本的东西。

                Context context = getApplicationContext();
                ContentResolver contentResolver = context.getContentResolver();

                Uri imageUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
                        + "://" + context.getResources().getResourcePackageName(R.drawable.lenna_512x512)
                        + '/' + context.getResources().getResourceTypeName(R.drawable.lenna_512x512)
                        + '/' + context.getResources().getResourceEntryName(R.drawable.lenna_512x512));

                try (AssetFileDescriptor assetFileDescriptor
                             = contentResolver.openAssetFileDescriptor(imageUri, "r")) {
                    ParcelFileDescriptor parcelFileDescriptor = assetFileDescriptor.getParcelFileDescriptor();
                    int fd = parcelFileDescriptor.getFd();
                    tv.setText(imageProcLoadNeon(fd));
                    parcelFileDescriptor.close();
                } catch (IOException ioException) {
                    Toast.makeText(getApplicationContext(),"Image load failed",Toast.LENGTH_SHORT).show();
                    ioException.printStackTrace();
                    Log.e("MyCrappyApp", "image load error: " +  ioException.getMessage());
                }
            }

我收到以下错误:

"E image load error:Resource does not exist: android.resource://com.learn.benchmarks/drawable/lenna_512x512"

请注意,资源存在于“res/drawable/lenna_512x512.bmp”中。 我还尝试在末尾附加“.bmp”,但仍然收到 IOException。 我也尝试过清理和重建项目,但仍然遇到这个问题。

android bitmap
1个回答
0
投票

您根本不需要这样做。如果你想以位图的形式访问可绘制资源,你只需这样做

BitmapFactory.decodeResource(context.getResources(), R.drawable.image);
你不会使用 URI。像这样的 URI 并不是获取资源的有效方法。

© www.soinside.com 2019 - 2024. All rights reserved.