uni-app 强制移除READ_MEDIA_VIDEO和READ_MEDIA_IMAGES权限不生效

发布于 1周前 作者 caililin 来自 uni-app

uni-app 强制移除READ_MEDIA_VIDEO和READ_MEDIA_IMAGES权限不生效

操作步骤

按照图上面的方法:

  1. 新建 AndroidManifest.xml 配置移除权限
  2. HBuilder 可视化工具强制移除的权限

预期结果

将对应权限移除。

实际结果

没有移除,上传 Google 之后仍然提示这两个权限存在。

bug 描述

两个权限,强制移除不成功:READ_MEDIA_IMAGESREAD_MEDIA_VIDEO

Image Image Image

开发环境及项目信息

详情
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 macOS Monterey
HBuilderX类型 正式
HBuilderX版本号 4.36
手机系统 Android
手机系统版本号 Android 12
手机厂商 小米
手机机型 小米13
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

4 回复

appid: UNI64BC38F


同遇到此问题!

楼主的问题解决了吗

在uni-app中,如果你发现强制移除READ_MEDIA_VIDEOREAD_MEDIA_IMAGES权限不生效,通常是因为权限管理在原生层面进行,而uni-app本身是一个使用Vue.js开发所有前端代码的框架,它依赖于原生插件或者平台特定的代码来处理权限请求。

以下是一些可能的解决方案,涉及到修改原生代码或者配置。请注意,这些操作需要对原生开发有一定的了解,并且可能因平台(如Android和iOS)而异。

Android平台

对于Android平台,你可以通过修改AndroidManifest.xml文件来移除不必要的权限,但这通常不是最佳实践,因为uni-app在打包时可能会自动添加必要的权限。更好的方法是在运行时请求或撤销权限。然而,Android没有直接的API来“强制移除”已授予的权限,用户或应用需要在设置中手动撤销。

但你可以控制权限的请求时机,比如在应用启动时检查并请求权限,或者根本不请求这些权限。以下是一个在Android原生代码中请求权限的示例(尽管这不是直接移除,但可以帮助理解权限管理):

if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}

注意READ_MEDIA_VIDEOREAD_MEDIA_IMAGES并不是Android标准权限,这里用READ_EXTERNAL_STORAGE作为示例。

iOS平台

对于iOS,权限管理通常在Info.plist文件中声明,并在代码中请求。如果你不想请求某个权限,只需确保Info.plist中没有相应的键即可。例如,如果你不想请求照片库访问权限,就不要在Info.plist中添加NSPhotoLibraryAddUsageDescriptionNSPhotoLibraryUsageDescription

uni-app层面

在uni-app层面,你可以通过条件编译来控制不同平台的代码执行,但直接管理原生权限的能力有限。你可能需要创建一个原生插件或者修改HBuilderX生成的原生项目代码。

结论

由于uni-app主要关注跨平台的前端开发,对原生权限的细粒度控制通常需要原生开发知识的辅助。如果你发现移除权限不生效,检查你的原生项目配置和代码,确保没有代码在运行时重新请求这些权限。同时,考虑用户隐私和数据安全,只在必要时请求权限。

回到顶部