uniapp,Anroid10+版本如何保存图片并删除

Android 10系统开始 进一步增强了平台功能,为外部存储设备上的应用和用户数据提供了更好的保护。作为这项工作的一部分,平台引入了进一步的改进,以简化向分区存储的转换。

为了让用户更好地控制自己的文件,保护用户隐私数据,并限制文件混乱情况,Android 11在分区存储基础上限制了应用访问其他应用的文件。

简言之:分区存储,不允许内存随意删除,只允许删除app以内的文件

具体的问题描述:适配Android10+设备注意事项 - DCloud问答

那如何实现存储图片以及删除图片呢:

1、存储图片

javascript 复制代码
		//预览时抓图并保存成图片文件---this.$refs.HCNet.NET_DVR_CapturePictureBlock为获取图片的方法,可根据实际情况替换
			NET_DVR_CapturePictureBlock() {
				// const filePath = plus.io.convertLocalFileSystemURL(`_doc/${fileName}`);
				var imagePath = plus.io.convertLocalFileSystemURL("_doc/" + new Date()
					.getTime() + ".png")
				console.log('图片的存储路径---------------', imagePath)
				var dic = {
					"lRealHandle": this.lRealHandle,
					"imagePath": imagePath
				}
				this.$refs.HCNet.NET_DVR_CapturePictureBlock(dic, (res) => {
					// console.log("预览时抓图并保存成图片文件:" + JSON.stringify(res))
					uni.saveImageToPhotosAlbum({
						filePath: imagePath
					})
				})
			},

2、删除图片:

javascript 复制代码
	//此处根据图片名称进行了图片筛选删除,可根据实际情况修改
readFile(historyData) {
				const folderPath = '_doc/';
				let startTime = new Date(historyData.taskStartTime).getTime(); // 起始时间戳
				let endTime = new Date(historyData.taskEndTime).getTime(); // 结束时间戳
				let aFileList = [];
				let list = []
				// that = this
				plus.io.resolveLocalFileSystemURL(
					folderPath, //指定的目录
					(entry) => {
						var directoryReader = entry.createReader(); //获取读取目录对象
						directoryReader.readEntries(
							(entries) => { //返回的是指定文件夹下的文件列表
								aFileList = entries
								aFileList.forEach(i => {
									if (/\./.test(i.name)) {
										let filenameA = i.name
										let dotIndex = filenameA.lastIndexOf('.'); // 获取最后一个点的索引
										let itemName = filenameA.slice(0, dotIndex);
										if (itemName >= startTime && itemName <= endTime) {
											this.delFile(i.name)
										}
									}
								})
							},
							(err) => {
								console.log("访问目录失败", err);
							});
					},
					(err) => {
						console.log("访问指定目录失败:" + err.message);
					});
			},


			delFile(fileName) {
				return new Promise((resolve, reject) => {
					let filePath = `_doc/${fileName}`
					plus.io.resolveLocalFileSystemURL(filePath, (entry) => {
						entry.remove(() => {
							// console.log('文件删除成功');
							resolve(); // 返回成功状态
						}, (error) => {
							console.error(`删除失败: ${error.code} - ${error.message}`);
							reject(error);
						});
					}, (error) => {
						console.error(`文件查找失败: ${error.code} - ${error.message}`);
						reject(error);
					});
				});
			},

另外,图片保存到本地,我实际在平板上看到的是白屏的图片,如果使用图片预览,就可以预览清楚了,预览代码:

javascript 复制代码
function previewImage() {
  const imagePath = '/storage/emulated/0/Android/data/uni.UNICDD06A7/apps/__UNI__CDD06A7/doc/1752030774848.png';

  uni.previewImage({
    current: imagePath, // 当前显示图片的链接
    urls: [imagePath]   // 预览图片的数组,可以包含多张图片
  });
}

// 调用预览图片函数
previewImage();
相关推荐
00后程序员张1 小时前
iOS 26 App 运行状况全面解析 多工具协同监控与调试实战指南
android·ios·小程序·https·uni-app·iphone·webview
2501_916007472 小时前
iOS 混淆实战,多工具组合完成 IPA 混淆、加固与发布治理(iOS混淆|IPA加固|无源码混淆|App 防反编译)
android·ios·小程序·https·uni-app·iphone·webview
2501_915918412 小时前
怎么上架 App?iOS 应用上架完整流程详解与跨平台发布实战指南
android·ios·小程序·https·uni-app·iphone·webview
2501_916008893 小时前
iOS 混淆工具链实战 多工具组合完成 IPA 混淆与加固(iOS混淆|IPA加固|无源码加固|App 防反编译)
android·ios·小程序·https·uni-app·iphone·webview
SY_FC3 小时前
uniapp textarea标签 在ios真机上出现高度拉长问题
uni-app
游戏开发爱好者812 小时前
HTTPS 内容抓取实战 能抓到什么、怎么抓、不可解密时如何定位(面向开发与 iOS 真机排查)
android·网络协议·ios·小程序·https·uni-app·iphone
shykevin20 小时前
uni-app x导航区域跳转
windows·uni-app
2501_9151063221 小时前
iOS 混淆与 IPA 加固全流程,多工具组合实现无源码混淆、源码防护与可审计流水线(iOS 混淆|IPA 加固|无源码加固|App 防反编译)
android·ios·小程序·https·uni-app·iphone·webview
游戏开发爱好者821 小时前
用多工具组合把 iOS 混淆做成可复用的工程能力(iOS混淆 IPA加固 无源码混淆 Ipa Guard)
android·ios·小程序·https·uni-app·iphone·webview
2501_915921431 天前
掌握 iOS 26 App 性能监控,从监测到优化的多工具组合流程
android·macos·ios·小程序·uni-app·cocoa·iphone