uni-app 初次打开应用直接提示要允许访问照片权限
uni-app 初次打开应用直接提示要允许访问照片权限
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:win10
HBuilderX类型:正式
HBuilderX版本号:3.4.9
手机系统:Android
手机系统版本号:Android 10
手机厂商:小米
手机机型:m9
页面类型:vue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
示例代码:
是在app-plus->distribute->android 中设置permissionExternalStorage的
操作步骤:
"permissionExternalStorage" : { "request" : "none", "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。" },
设置none 后初次打开应用还会提示要允许访问以下权限访问照片文件权限。
预期结果:
打开后不提示
实际结果:
打开就提示授权
bug描述:
"permissionExternalStorage" : { "request" : "none", "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。" },
设置none 后初次打开应用还会提示要允许访问以下权限访问照片文件权限。
更多关于uni-app 初次打开应用直接提示要允许访问照片权限的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你刚开始是不是有代码调用这东西了
更多关于uni-app 初次打开应用直接提示要允许访问照片权限的实战教程也可以访问 https://www.itying.com/category-93-b0.html
请问解决了吗?
用原生插件了吗?看起来是三方sdk引起的。
打包时虽然manifest设置不要权限,但如果原生插件申请了权限,还是会被打进去
在 uni-app 中,如果你希望在应用初次打开时直接提示用户允许访问照片权限,你可以使用 uni.authorize
或 uni.getSetting
等 API 来实现。以下是一个简单的示例,展示了如何在应用启动时请求照片权限。
1. 使用 uni.authorize
请求权限
uni.authorize
是用于直接请求用户授权的 API。你可以在应用的 onLaunch
生命周期中调用它来请求照片权限。
// main.js 或 App.vue 中的 onLaunch
export default {
onLaunch() {
// 请求照片权限
uni.authorize({
scope: 'scope.writePhotosAlbum', // 请求写入相册的权限
success() {
console.log('用户已授权访问照片');
},
fail() {
console.log('用户拒绝了访问照片的请求');
}
});
}
}
2. 使用 uni.getSetting
检查权限状态
如果你希望在请求权限之前先检查用户是否已经授权,可以使用 uni.getSetting
。
// main.js 或 App.vue 中的 onLaunch
export default {
onLaunch() {
// 检查权限状态
uni.getSetting({
success(res) {
if (!res.authSetting['scope.writePhotosAlbum']) {
// 如果用户未授权,则请求权限
uni.authorize({
scope: 'scope.writePhotosAlbum',
success() {
console.log('用户已授权访问照片');
},
fail() {
console.log('用户拒绝了访问照片的请求');
}
});
} else {
console.log('用户已经授权访问照片');
}
}
});
}
}
3. 处理权限拒绝的情况
如果用户拒绝了权限请求,你可以提示用户手动开启权限,或者引导用户前往设置页面开启权限。
uni.showModal({
title: '提示',
content: '您拒绝了访问照片的权限,是否前往设置页面开启?',
success(res) {
if (res.confirm) {
// 引导用户前往设置页面
uni.openSetting({
success(settingRes) {
console.log(settingRes.authSetting);
}
});
}
}
});