Android Q 选择相册图片并显示

之前是通过相册选取获取到Uri,然后转成路径显示的,由于Q限制了对图库文件的访问,因此无法打开文件。图片无法显示也无法上传。

1.图片显示,Glide可直接通过load(Uri)显示,或者使用imageView.setImageURI(uri);

或者通过

           pfd = context.getContentResolver().openFileDescriptor(imageUri, "r");
            Bitmap bitmap = BitmapFactory.decodeFileDescriptor(pfd.getFileDescriptor());
          转成bitmap再处理

2.图片上传,目前的方案是 将选中图片通过文件流方式写一份到 私有路径,然后再操作私有路径下的文件

fun copyExternalToInternal(context:Context,extUrl:Uri,internalPath:String):Boolean{
    val inputStream = context.contentResolver.openInputStream(extUrl)
    val outputStream = FileOutputStream(internalPath)
    val buffer = ByteArray(1000)
    if(inputStream == null) return false
    while (inputStream.read(buffer)>0){
        outputStream.write(buffer)
    }
    inputStream.close()
    outputStream.close()
    return true
}

没有找到更好的方法,如有更优请告知。

 

你可能感兴趣的:(Android Q 选择相册图片并显示)