uni-app 4.24云打包问题:勾选相机和相册权限后,安装APK时未显示存储权限且无法打开相册

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app 4.24云打包问题:勾选相机和相册权限后,安装APK时未显示存储权限且无法打开相册

开发环境 版本号 项目创建方式
Windows windows10 HBuilderX

操作步骤:

4.24云打包 勾选相机和相册后,安装apk的时候没有显示存储权限无法打开相册

预期结果:

可以获取权限

实际结果:

4.24云打包 勾选相机和相册后,下载apk没有显示存储权限无法打开相册

bug描述:

4.24云打包 勾选相机和相册后,下载apk没有显示存储权限,并且无法打开相册,4.24以上版本云打包不会出现这个问题,因为购买了插件市场的阿里百川原生插件,4.24以上云打包后,插件会出现错误,无法正常使用,问了插件作者说没办法解决只能使用4.24版本以下版本才能使用插件。

image


9 回复

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发出来我们排查下。

只能使用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的官方文档或社区论坛,看看是否有其他开发者遇到并解决了类似的问题。

回到顶部