当我尝试加载 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。 我也尝试过清理和重建项目,但仍然遇到这个问题。
您根本不需要这样做。如果你想以位图的形式访问可绘制资源,你只需这样做
BitmapFactory.decodeResource(context.getResources(), R.drawable.image);
你不会使用 URI。像这样的 URI 并不是获取资源的有效方法。