uni-app 强制移除READ_MEDIA_VIDEO和READ_MEDIA_IMAGES权限不生效
uni-app 强制移除READ_MEDIA_VIDEO和READ_MEDIA_IMAGES权限不生效
操作步骤
按照图上面的方法:
- 新建
AndroidManifest.xml
配置移除权限 - HBuilder 可视化工具强制移除的权限
预期结果
将对应权限移除。
实际结果
没有移除,上传 Google 之后仍然提示这两个权限存在。
bug 描述
两个权限,强制移除不成功:READ_MEDIA_IMAGES
和 READ_MEDIA_VIDEO
开发环境及项目信息
项 | 详情 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Mac |
PC开发环境操作系统版本号 | macOS Monterey |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.36 |
手机系统 | Android |
手机系统版本号 | Android 12 |
手机厂商 | 小米 |
手机机型 | 小米13 |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
appid: UNI64BC38F
同遇到此问题!
楼主的问题解决了吗
在uni-app中,如果你发现强制移除READ_MEDIA_VIDEO
和READ_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_VIDEO
和READ_MEDIA_IMAGES
并不是Android标准权限,这里用READ_EXTERNAL_STORAGE
作为示例。
iOS平台
对于iOS,权限管理通常在Info.plist
文件中声明,并在代码中请求。如果你不想请求某个权限,只需确保Info.plist
中没有相应的键即可。例如,如果你不想请求照片库访问权限,就不要在Info.plist
中添加NSPhotoLibraryAddUsageDescription
或NSPhotoLibraryUsageDescription
。
uni-app层面
在uni-app层面,你可以通过条件编译来控制不同平台的代码执行,但直接管理原生权限的能力有限。你可能需要创建一个原生插件或者修改HBuilderX生成的原生项目代码。
结论
由于uni-app主要关注跨平台的前端开发,对原生权限的细粒度控制通常需要原生开发知识的辅助。如果你发现移除权限不生效,检查你的原生项目配置和代码,确保没有代码在运行时重新请求这些权限。同时,考虑用户隐私和数据安全,只在必要时请求权限。