s***@163.com
s***@163.com
  • 发布:2024-07-11 12:49
  • 更新:2024-07-11 15:43
  • 阅读:102

请求系统文件存储权限,APP 打包后无法拉起,真机调试时没有问题

分类:uni-app

编辑器与版本 HBuilder X -4.23

导入权限获取的sdk,组件连接 App权限判断和提示

import permision from "@/js_sdk/wa-permission/permission.js";
this.module = {  
    title: "文件存储",  
    name: 'file_W',  
    content: "用于在保存朋友圈文案封面图片、表情包图片 等场景中写入相册和文件内容",  
    permision: {  
        ios: "photoLibrary",  
        android: "android.permission.WRITE_EXTERNAL_STORAGE",  
    }  
}
var allowed = 0;  
// #ifdef APP-IOS  
allowed = await permision.judgeIosPermission(this.module.permision.ios);  
// #endif  

// #ifdef APP-ANDROID  
allowed = await permision.requestAndroidPermission(this.module.permision.android);  
// #endif  
this.result = allowed;  
console.warn('allowed: ' + allowed);

本地真机调试+自定义基座调试都可以正常拉起授权弹窗,但是正式发行打包的 APP 都拉不起来

2024-07-11 12:49 负责人:无 分享
已邀请:
s***@163.com

s***@163.com (作者)

问题已解决

原因是以下平台差异代码没起效果,猜测应该是顺序执行了,先执行 ios 的权限获取然后又去执行安卓的权限获取,获取系统没有的能力从而导致代码执行报错。

var allowed = 0;  
// #ifdef APP-IOS    
allowed = await permision.judgeIosPermission(this.module.permision.ios);    
// #endif    

// #ifdef APP-ANDROID    
allowed = await permision.requestAndroidPermission(this.module.permision.android);    
// #endif  

更换为如下代码之后恢复正常

var allowed = 0;  
const system = uni.getSystemInfoSync();  
if(system.osName === 'ios'){  
    console.warn("苹果申请权限:"+this.module.permision.ios);  
    allowed = await permision.judgeIosPermission(this.module.permision.ios);  
}else{  
    console.warn("安卓申请权限:"+this.module.permision.android);  
    allowed = await permision.requestAndroidPermission(this.module.permision.android);  
}

要回复问题请先登录注册