uniapp权限被拒绝,跳转手机设置页面 权限设置

先获取权限被拒绝状态,临时拒绝重新调起授权,永久拒绝弹窗显示去开启权限

uni.saveImageToPhotosAlbum({
			filePath: res.data,
			success: () => {
				uni.hideLoading();
				config.showtoast('保存成功,请到相册查看');
			},
			fail: (err) => {
				// #ifdef APP-PLUS
				if (uni.getSystemInfoSync().platform == 'android') {
					plus.android.requestPermissions(['android.permission.WRITE_EXTERNAL_STORAGE'],
						function(e) {
							if (e.deniedAlways.length > 0) { //权限被永久拒绝
								uni.showModal({
									title: '提示',
									content: '保存图片权限被拒绝,是否前往开启权限',
									success: (res) => {
										if (res.confirm) {
											// 弹出提示框解释为何需要读写手机储存权限,引导用户打开设置页面开启
											var main = plus.android
												.runtimeMainActivity();
											var Intent = plus.android.importClass(
												"android.content.Intent");
											//直接进入应用列表的权限设置
											var mIntent = new Intent(
												'android.settings.APPLICATION_SETTINGS'
											);
											main.startActivity(mIntent);
										} else if (res.cancel) {
											console.log('用户点击取消');
										}
									}
								});
							}
							if (e.deniedPresent.length > 0) { //权限被临时拒绝
								// 弹出提示框解释为何需要读写手机储存权限,可再次调用plus.android.requestPermissions申请权限
								plus.android.requestPermissions([
									'android.permission.WRITE_EXTERNAL_STORAGE'
								])
							}
						},
						function(e) {
							console.log('Request Permissions error:' + JSON.stringify(e));
						});
				} else {
					uni.hideLoading();
					config.showtoast('保存失败');
				}
				// #endif
				uni.hideLoading();
				config.showtoast('保存失败');
			}
		});
action界面
ACTION_SETTINGS系统设置界面
ACTION_LOCATION_SOURCE_SETTINGSAPN设置界面
ACTION_LOCATION_SOURCE_SETTINGS定位设置界面
ACTION_AIRPLANE_MODE_SETTINGS更多连接方式设置界面
ACTION_DATA_ROAMING_SETTINGS双卡和移动网络设置界面
ACTION_ACCESSIBILITY_SETTINGS无障碍设置界面/辅助功能界面
ACTION_SYNC_SETTINGS同步设置界面
ACTION_ADD_ACCOUNT添加账户界面
ACTION_NETWORK_OPERATOR_SETTINGS选取运营商的界面
ACTION_SECURITY_SETTINGS安全设置界面
ACTION_PRIVACY_SETTINGS备份重置设置界面
ACTION_VPN_SETTINGSVPN设置界面,可能不存在
ACTION_WIFI_SETTINGS无线网设置界面
ACTION_WIFI_IP_SETTINGSWIFI的IP设置
ACTION_BLUETOOTH_SETTINGS蓝牙设置
ACTION_CAST_SETTINGS投射设置
ACTION_DATE_SETTINGS日期时间设置
ACTION_SOUND_SETTINGS声音设置
ACTION_DISPLAY_SETTINGS显示设置
ACTION_LOCALE_SETTINGS语言设置
ACTION_VOICE_INPUT_SETTINGS辅助应用和语音输入设置
ACTION_INPUT_METHOD_SETTINGS语言和输入法设置
ACTION_USER_DICTIONARY_SETTINGS个人字典设置界面
ACTION_INTERNAL_STORAGE_SETTINGS存储空间设置的界面
ACTION_SEARCH_SETTINGS搜索设置界面
ACTION_APPLICATION_DEVELOPMENT_SETTINGS开发者选项
ACTION_DEVICE_INFO_SETTINGS手机状态信息的界面
ACTION_DREAM_SETTINGS互动屏保设置的界面
ACTION_NOTIFICATION_LISTENER_SETTINGS通知使用权设置的界面
ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS勿扰权限设置的界面
ACTION_CAPTIONING_SETTINGS字幕设置的界面
ACTION_PRINT_SETTINGS打印设置界面
ACTION_BATTERY_SAVER_SETTINGS节电助手界面
ACTION_HOME_SETTINGS主屏幕设置界面
ACTION_APPLICATION_DETAILS_SETTINGS根据包名跳转到系统自带的应用程序信息
ACTION_APPLICATION_SETTINGS应用程序列表
ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS应用程序界面【所有的】
ACTION_MANAGE_APPLICATIONS_SETTINGS应用程序列表界面【已安装的】
ACTION_INPUT_METHOD_SUBTYPE_SETTINGS【API 11及以上】语言选择界面 【多国语言选择】
ACTION_NFCSHARING_SETTINGS显示NFC共享设置【API 14及以上】
ACTION_NFC_SETTINGS 显示NFC设置【API 16及以上】
ACTION_QUICK_LAUNCH_SETTINGS快速启动设置界面

### 实现应用启动时请求用户授权 为了在 UniApp 应用启动时请求用户授权,需遵循特定步骤来确保权限管理既合规又高效。具体措施如下: #### 权限声明与配置 在 `manifest.json` 文件中明确所需权限,这是至关重要的第一步。对于涉及多媒体功能的应用而言,应在此处指定诸如相机、麦克风等敏感资源的访问需求[^3]。 ```json { "app-plus": { "distribute": {}, "permissions": [ { "name": "android.permission.CAMERA", " rationale ": "用于拍照" }, { "name": "android.permission.RECORD_AUDIO", "rationale": "录音使用" } ] } } ``` #### 动态权限请求逻辑编写 考虑到不同操作系统版本间处理方式存在差异,建议采用条件判断语句配合官方提供的API接口完成动态权限请求流程设计。下面给出了一段基于 Vue 组件生命周期钩子方法实现自动弹窗询问用户的 JavaScript 示例代码片段[^1]。 ```javascript export default { onLoad() { this.checkPermission(); }, methods: { checkPermission() { const that = this; plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo){ uni.getSystemInfo({ success(res) { let apiLevel = res.SDKVersion.split('.').map(Number); if (apiLevel >= [9]) { // Android 9.0 及以上 uni.requestPermissions({ perms: ['camera', 'microphone'], success(e) { console.log('success:', e.authResult.camera === 'authorized' && e.authResult.microphone === 'authorized'); if (!(e.authResult.camera === 'authorized' && e.authResult.microphone === 'authorized')) { setTimeout(() => { that.openSettingPage(); }, 2000); } }, fail(err) { console.error('fail:', err.errMsg || JSON.stringify(err)); that.openSettingPage(); } }); } else { // 对于较低版本的操作系统,可能需要其他策略... } } }) }); }, openSettingPage(){ uni.showModal({ title:'提示', content:'当前应用缺少必要权限,请前往设置页面开启。', confirmText:"去设置", cancelText:"取消", success:function(res){ if(res.confirm){ uni.openSetting({}); } } }); } } }; ``` 此段脚本会在应用程序加载完成后立即触发权限检测过程,并根据不同情况作出相应反应——当遇到拒绝授予权限时会引导用户跳转系统设置界面手动调整;而对于已经授予的情况则继续正常运行业务逻辑[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值