uni-app 4.24云打包问题:勾选相机和相册权限后,安装APK时未显示存储权限且无法打开相册
uni-app 4.24云打包问题:勾选相机和相册权限后,安装APK时未显示存储权限且无法打开相册
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | windows10 | HBuilderX |
操作步骤:
4.24云打包 勾选相机和相册后,安装apk的时候没有显示存储权限无法打开相册
预期结果:
可以获取权限
实际结果:
4.24云打包 勾选相机和相册后,下载apk没有显示存储权限无法打开相册
bug描述:
4.24云打包 勾选相机和相册后,下载apk没有显示存储权限,并且无法打开相册,4.24以上版本云打包不会出现这个问题,因为购买了插件市场的阿里百川原生插件,4.24以上云打包后,插件会出现错误,无法正常使用,问了插件作者说没办法解决只能使用4.24版本以下版本才能使用插件。
manifest或Androidmanifest里权限部分怎么配的?
插件作者迟早得适配新版的,也要催他们
“distribute” : { / android打包配置 / “android” : { “permissions” : [ “<uses-permission android:name=“android.permission.ACCESS_COARSE_LOCATION”/>”, “<uses-permission android:name=“android.permission.ACCESS_FINE_LOCATION”/>”, “<uses-permission android:name=“android.permission.ACCESS_LOCATION_EXTRA_COMMANDS”/>”, “<uses-permission android:name=“android.permission.ACCESS_MOCK_LOCATION”/>”, “<uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE”/>”, “<uses-permission android:name=“android.permission.ACCESS_WIFI_STATE”/>”, “<uses-permission android:name=“android.permission.CALL_PHONE”/>”, “<uses-permission android:name=“android.permission.CAMERA”/>”, “<uses-permission android:name=“android.permission.CHANGE_WIFI_STATE”/>”, “<uses-permission android:name=“android.permission.INTERNET”/>”, “<uses-permission android:name=“android.permission.MODIFY_AUDIO_SETTINGS”/>”, “<uses-permission android:name=“android.permission.MOUNT_UNMOUNT_FILESYSTEMS”/>”, “<uses-permission android:name=“android.permission.READ_LOGS”/>”, “<uses-permission android:name=“android.permission.READ_PHONE_STATE”/>”, “<uses-permission android:name=“android.permission.WRITE_EXTERNAL_STORAGE”/>”, “<uses-permission android:name=“android.permission.WRITE_SETTINGS”/>” ], “autoSdkPermissions” : false, “abiFilters” : [ “armeabi-v7a”, “arm64-v8a”, “x86” ], “schemes” : “libaijia”, “minSdkVersion” : 21 } 这个是manifest里面的权限部分,这个插件我看群里面反馈很多次了 但是作者并没有要修复的意思,但是插件已经购买了无法退款
打包出来的权限只有位置 电话 和通知 / 模块配置 / “modules” : { “Barcode” : {}, “Geolocation” : {}, “Maps” : {}, “Payment” : {}, “Share” : {}, “Webview-x5” : {}, “VideoPlayer” : {}, “Camera” : {} },
这个可能是插件的原因吗,我这边把插件去掉之后重新打包权限就有了
回复 3***@qq.com: 使用什么插件?把插件链接地址和appid发出来我们排查下。
回复 DCloud_App_Array: https://ext.dcloud.net.cn/plugin?id=2721这个插件
只能使用4.24版本打包插件才能生效
回复 DCloud_App_Array: UNID33B945 appid
针对您提到的uni-app 4.24云打包问题,即在勾选相机和相册权限后,安装APK时未显示存储权限且无法打开相册的情况,这通常是由于Android权限管理不当或配置缺失引起的。以下是一些可能的解决方案和相关代码案例,供您参考:
1. 检查manifest.json
配置
首先,确保在manifest.json
中正确配置了相机和存储权限。以下是一个示例配置:
{
"mp-weixin": {},
"app-plus": {
"distribute": {
"android": {
"permissions": [
"android.permission.CAMERA",
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE"
]
}
}
}
}
2. 动态请求权限(针对Android 6.0及以上)
如果您的应用目标版本是Android 6.0(API 级别 23)或更高版本,您需要在运行时动态请求权限。以下是一个在Vue组件中请求存储权限的示例:
export default {
methods: {
requestStoragePermission() {
const permissions = ['android.permission.READ_EXTERNAL_STORAGE', 'android.permission.WRITE_EXTERNAL_STORAGE'];
plus.android.requestPermissions(permissions, (event) => {
for (let i = 0; i < event.deniedAlways.length; i++) {
console.error('Permission denied always: ' + event.deniedAlways[i]);
}
for (let i = 0; i < event.denied.length; i++) {
console.error('Permission denied: ' + event.denied[i]);
// 可以在这里引导用户去设置中手动开启权限
}
for (let i = 0; i < event.granted.length; i++) {
console.log('Permission granted: ' + event.granted[i]);
}
});
}
},
mounted() {
this.requestStoragePermission();
}
}
3. 检查代码中的权限使用
确保在代码中正确使用了这些权限。例如,当尝试访问相册时,确保已经获得了存储权限。
4. 清理和重建项目
有时候,简单的清理和重建项目可以解决一些莫名其妙的问题。尝试清理uni-app项目的缓存,并重新进行云打包。
5. 调试和日志
使用Android Studio或其他调试工具查看应用的日志,检查是否有关于权限的错误信息。
通过上述步骤,您应该能够解决uni-app云打包后APK未显示存储权限且无法打开相册的问题。如果问题依旧存在,建议检查uni-app的官方文档或社区论坛,看看是否有其他开发者遇到并解决了类似的问题。