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
更多关于uni-app Android11下无法访问公用目录的第三方数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html
Android 11设备强制分区存储,不推荐使用nativejs来实现IO操作的功能。推荐使用模块内部提供的功能或者采用uni原生插件来实现

