uni-app Android11下无法访问公用目录的第三方数据

uni-app Android11下无法访问公用目录的第三方数据

开发环境 版本号 项目创建方式
Windows WIN10 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:WIN10

HBuilderX类型:正式

HBuilderX版本号:3.1.19

手机系统:Android

手机系统版本号:Android 11

手机厂商:小米

手机机型:Redmi Note 9 Pro

页面类型:vue

打包方式:云端

项目创建方式:HBuilderX


示例代码:

let IMAGE_UNSPECIFIED = ‘image/*’; let PHOTOZOOM = 2; let PHOTOLAT = 1; let main = plus.android.runtimeMainActivity(); let Intent = plus.android.importClass(‘android.content.Intent’); let MediaStore = plus.android.importClass(‘android.provider.MediaStore’); let File = plus.android.importClass(‘java.io.File’); let Uri = plus.android.importClass(‘android.net.Uri’); let intent = new Intent(Intent.ACTION_PICK, null); let outPutPath; intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED); main.startActivityForResult(intent, PHOTOZOOM); main.onActivityResult = async (requestCode, resultCode, data) => { if (PHOTOZOOM == requestCode) { let publicPictures = ‘/storage/emulated/0/Pictures/’;//Android 11 let fullpath = new File(publicPictures); if (!fullpath.exists()) fullpath.mkdir(); outPutPath = ${publicPictures}img-${new Date().getTime()}.jpg; let file = new File(outPutPath); let outPutUri = Uri.fromFile(file); let uri = data.getData(); let cropIntent = new Intent(‘com.android.camera.action.CROP’); cropIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); cropIntent.setDataAndType(uri, IMAGE_UNSPECIFIED); cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, outPutUri); cropIntent.putExtra(‘crop’, ‘true’); cropIntent.putExtra(‘aspectX’, 1); cropIntent.putExtra(‘aspectY’, 1); cropIntent.putExtra(‘outputX’, 200); cropIntent.putExtra(‘outputY’, 200); main.startActivityForResult(cropIntent, PHOTOLAT); } else if (requestCode == PHOTOLAT) { if (!new File(outPutPath).exists()) return; console.log( await uni.saveImageToPhotosAlbum({ filePath: outPutPath }) ); } };


操作步骤:


如复现代码所示

预期结果:

正常操作,返回信息


实际结果:


操作失败,所有文件、图片操作相关API全部无一例外失效(包括但不限于uni.saveImageToPhotosAlbum、uni.getImageInfo、uni.compressImage)

更多关于uni-app Android11下无法访问公用目录的第三方数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app Android11下无法访问公用目录的第三方数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html


Android 11设备强制分区存储,不推荐使用nativejs来实现IO操作的功能。推荐使用模块内部提供的功能或者采用uni原生插件来实现

回到顶部