有关微信小程序保存图片到相册以及当用户拒绝授权保存图片后如何重新拉起授权的详细解析

一、准备阶段

保存图片到系统相册文档

 uni.saveImageToPhotosAlbum({
	filePath: '', // 必须是本地路径
	success: () => {
		console.log('保存成功');
	},
	fail:() => {
		console.log('保存失败')
	}
});

注意:此处的 filePat 必须是本地图片路径!!!!
疑问1:当用户第一次点击保存按钮调用了该接口,会弹出提示授权弹框,此时若点击了取消按钮,那么当用户第二次再点击保存按钮时此时会直接走fail接口而不会再次弹出授权提示框。那么此时又该如何重新拉起授权呢
疑问2:无论是用户未授权还是授权之后保存时点击了取消,都会直接走fail回调。那么此时又该如何区分是未授权还是说授权后点击了取消保存的按钮

二、疑问解答

  1. 疑问1解答:参考调起客户端小程序设置界面文档

虽然不能直接像用户第一次点击保存按钮时直接弹出授权弹框允许书券,但是可以通过打开设置界面让用户直接进入到设置页面手动打开

uni.openSetting({
	success(res) {
		console.log('用户打开设置页面')
	}
});

可通过预约文档进一步设置判断用户是都打开了之类的,不过没什么必要

  1. 疑问2解答:参考获取用户的当前设置文档

至于如何区分是用户时未授权还是说授权后点击了取消保存的按钮而走的fail回调,可通过判断用户是否授权了保存相册的权限,来进一步完善逻辑

wx.getSetting({
		success(res) {
			if(res.authSetting['scope.writePhotosAlbum']) { // 已授权,用户点击了取消按钮
				console.log('用户点击了取消保存相册')
				uni.showToast({
					icon: 'none',
					title: '取消'
				});
			}
			if(res.authSetting['scope.writePhotosAlbum'] == false) { // 用户未授权
				console.log('用户未授权保存相册')
			}
		}
	})

三、将以上逻辑整合起来

当点击保存时,直接调用保存相册接口(第一次的话会直接弹出授权提示框,后续正常走逻辑就对了),若用户点击了取消或者用户压根就未授权时,先通过判断用户是否打开了保存相册的权限,若用户未授权则提示是否跳转设置页面授权打开,若用户已授权了则用户是点击了取消按钮

 uni.saveImageToPhotosAlbum({
	filePath: '', // 必须是本地路径
	success: () => {
		uni.showToast({
			icon: 'success',
			title: '保存成功',
			duration: 2000
		});
	},
	fail:() => { // 保存失败有可能是用户点击了取消按钮,也有可能是用户未授权保存相册功能这时候需要用户手动开启权限
		// console.log('失败')
		wx.getSetting({
			success(res) {
				if(res.authSetting['scope.writePhotosAlbum']) { // 已授权,用户点击了取消按钮,无需其他操作
					uni.showToast({
						icon: 'none',
						title: '取消'
					});
				}
				if(res.authSetting['scope.writePhotosAlbum'] == false) { // 未授权,需用户跳转设置页面开启权限
					uni.showModal({
						title: '提示',
						content: `图片保存失败,请前往设置页面允许保存相册`,
						confirmColor: '#8C5CDD',
						success: function (res) {
							if (res.confirm) {
								// console.log('用户点击确定');
								uni.openSetting({
								success(res) {
									console.log('用户打开设置页面')
								}
							} else if (res.cancel) {
								// console.log('用户点击取消');
								uni.showToast({
									icon: 'none',
									title: '取消'
								});
							}
						}
					});
				}
			}
		})
	}
});

四、其他:预览图片和视频文档

注意:此接口只支持微信小程序
此接口也可做到保存图片以及分享的效果,预览状态下长按图片即可

wx.previewMedia({
	sources: [{
		url: '', // 必须url网络路径
		type: 'image'
	}],
	success: () => {
		console.log('成功')
	}
})
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值