从适配器访问图像URI

时间:2015-11-02 19:59:40

标签: java android

我有一个主要活动,其中向用户显示一个对话框,用于从图库中选择图像或使用相机。问题是(我认为)我正在构建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适配器访问内部存储?

0 个答案:

没有答案