我有一个主要活动,其中向用户显示一个对话框,用于从图库中选择图像或使用相机。问题是(我认为)我正在构建6.0 API并且权限正在弄乱我。
当应用程序将Uri(作为字符串)传递到数据库时,适配器必须访问该数据库并获取图片并将其放入ImageView。
我获得了访问MainActivity中文件的READ_EXTERNAL_STORAGE权限,但我认为我在适配器中也需要它,但我无法从那里访问权限。
// TL; DR如何从recyclerview适配器类内部访问内部存储(图片)?
这是我的代码:
在检查权限后,我开始选择图像的意图:
//RESULT_LOAD_IMAGE = 0;
Intent toGal = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(toGal, RESULT_LOAD_IMAGE);
然后,在onActivityResult内部,我获取URI并将变量设置为它的字符串值
boolean request = requestCode == RESULT_LOAD_CAMER || requestCode == RESULT_LOAD_IMAGE;
if (resultCode == Activity.RESULT_OK && request && imageReturnedIntent != null) {
Uri selectedImage = imageReturnedIntent.getData();
picturePath = String.valueOf(selectedImage);
Log.i(TAG, picturePath);
}
然后我将它存储在Realm数据库中,并从适配器访问它。我知道这不是问题所在,因为我可以记录存储在db中的指向图像的路径。
以下是我在适配器中访问它的地方:
String imgString = Model.getImage(); //This is "/emulated/storage/pathtoimg.jpg"
if (imgString != null) {
Bitmap BM = BitmapFactory.decodeFile(imgString);
ImageView.setImageBitmap(BM);
}
}
但没有任何反应。当我尝试从适配器内部请求权限时,它说它需要是一个活动,那么我如何从recyclerview适配器访问内部存储?