uni-app获取相册权限(如果用户点击了拒绝了授权,就去引导用户继续开启权限)

1,142 阅读1分钟

直接上代码

function open() {
	uni.getSetting({
		success: (res) => {
			let authStatus = res.authSetting['scope.album'] && res.authSetting['scope.camera'];
			// 如果没有授权相册
			if (!authStatus) {
				//向用户发起授权请求
				uni.authorize({
					scope: 'scope.camera',
					success: () => {
						uni.showActionSheet({
							title: '选择上传类型',
							itemList: ['图片', '视频'],
							success: (res) => {
								console.log(res);
								if (res.tapIndex == 0) {
									uni.chooseImage({
										count: 6, //默认9
										sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
										sourceType: ['album'], //从相册选择
										success: function (res) {
											console.log(JSON.stringify(res.tempFilePaths));
										}
									});
								} else {
									uni.chooseVideo();
								}
							}
						});
					},
					fail: () => {
						uni.showModal({
							title: '授权失败',
							content: '需要从您的相机或相册获取图片,请在设置界面打开相关权限',
							success: (res) => {
								if (res.confirm) {
									uni.openSetting();
								}
							}
						});
					}
				});
			} else {
				uni.showActionSheet({
					title: '选择上传类型',
					itemList: ['图片', '视频'],
					success: (res) => {
						console.log(res);
						if (res.tapIndex == 0) {
							this.chooseImages();
						} else {
							this.chooseVideo();
						}
					}
				});
			}
		}
	});
}

代码二

uni.getSetting({
		success: (res) => {
			//	let authStatus = res.authSetting['scope.album'] && res.authSetting['scope.camera'];
			// 如果没有授权相册
			let authStatus = res.authSetting['scope.writePhotosAlbum'];
			if (!authStatus) {
				console.log('没有权限');
				uni.authorize({
					scope: 'scope.writePhotosAlbum',
					success: (res) => {
						console.log('允许');
					},
					fail(fail) {
						console.log('拒绝');
						uni.showModal({
							content: '请允许添加到相册',
							showCancel: false,
							success() {
								uni.openSetting({
									success({ authSetting }) {
										if (authSetting['scope.writePhotosAlbum']) {
											// 保存到本地
										}
									}
								});
							}
						});
					}
				});