Java 从适配器访问图像URI

Java 从适配器访问图像URI,java,android,Java,Android,我有一个主要的活动,在这个活动中,用户会看到一个对话,以便从图库中选择图像或使用相机。问题是(我认为)我是在6.0API上构建的,权限让我很困惑 当应用程序将Uri(作为字符串)传递到数据库中时,适配器必须访问该数据库并获取图片并将其放入ImageView中 我获得了在MainActivity中访问该文件的READ_EXTERNAL_存储权限,但我想我在适配器中也需要它,但我无法从适配器中访问权限 //TL;DR如何从recyclerview适配器类内部访问内部存储(图片) 这是我的密码: 检查

我有一个主要的活动,在这个活动中,用户会看到一个对话,以便从图库中选择图像或使用相机。问题是(我认为)我是在6.0API上构建的,权限让我很困惑


当应用程序将Uri(作为字符串)传递到数据库中时,适配器必须访问该数据库并获取图片并将其放入ImageView中

我获得了在MainActivity中访问该文件的READ_EXTERNAL_存储权限,但我想我在适配器中也需要它,但我无法从适配器中访问权限

//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);
    }
然后我将其存储在领域数据库中,并从适配器访问它。我知道这不是问题所在,因为我可以记录数据库中存储的指向图像的路径

下面是我在适配器内部访问它的位置:

String imgString = Model.getImage(); //This is "/emulated/storage/pathtoimg.jpg"
if (imgString != null) {
        Bitmap BM = BitmapFactory.decodeFile(imgString);
        ImageView.setImageBitmap(BM);
    }
}

但什么也没发生。当我尝试从适配器内部请求权限时,它会说它需要是一个活动,因此如何从recyclerview适配器访问内部存储?

“当应用程序将Uri(作为字符串)传递到数据库时”——这将无法可靠地工作。立即使用从onActivityResult()返回的
Uri
。如果您将来需要访问数据,则需要将该数据(例如,复制图像)复制到您的应用程序中。
Uri
在将来可能不再有用,特别是如果它是
内容://
Uri
@Plays2:您需要在活动中请求权限,然后在请求权限结果时可以再次触发相同的工作!另一方面,当应用程序将Uri(作为字符串)传递到数据库中时,您需要具有设计糟糕的活动上下文——这将无法可靠地工作。立即使用从onActivityResult()返回的
Uri
。如果您将来需要访问数据,则需要将该数据(例如,复制图像)复制到您的应用程序中。
Uri
在将来可能不再有用,特别是如果它是
内容://
Uri
@Plays2:您需要在活动中请求权限,然后在请求权限结果时可以再次触发相同的工作!另一方面,你需要有活动的背景,这是糟糕的设计