uni-app怎么配置manifest原生权限 uni-app申请Android动态权限

夜明同学_8141

夜明同学_8141

2026-05-27

1126人浏览

原创

uniapp android权限需静态声明+动态申请:manifest.json中在app-plus→distribute→android→permissions下填标准权限字符串,再用plus.android.requestpermissions()调用并处理granted/deniedpresent/deniedalways三种状态。

uni-app怎么配置manifest原生权限 uni-app申请android动态权限

UniApp 的 Android 权限必须分两步走:先在 manifest.json 里静态声明,再用 plus.android.requestPermissions() 动态申请。只做前者,6.0+ 设备上权限永远拿不到;只做后者,应用打包会直接报错或被市场拒审。

manifest.json 中怎么填 Android 权限声明

必须在 app-plus → distribute → android → permissions 节点下写字符串数组,每个元素是完整权限常量(不是 XML 标签)。常见错误是抄错拼写、多加空格、用了斜杠结尾、或者误写成 <uses-permission ...></uses-permission> 形式。

  • "android.permission.CAMERA" —— 不是 CAMERA_PERMISSION,也不是 android.hardware.camera
  • "android.permission.RECORD_AUDIO" —— 注意是 RECORD_AUDIO,不是 RECORD_MIC 或 AUDIO_RECORD
  • "android.permission.ACCESS_FINE_LOCATION" —— 定位要精确就用这个;若只需粗略定位,可用 ACCESS_COARSE_LOCATION,但多数地图/扫码场景仍需精细
  • 存储权限在 Android 10+ 已被弃用,WRITE_EXTERNAL_STORAGE 在 targetSdkVersion ≥ 29 后默认无效,应改用 MANAGE_EXTERNAL_STORAGE(需额外说明用途)或适配 Scoped Storage

plus.android.requestPermissions() 怎么调用才不崩

这个 API 是原生桥接入口,仅在 App 端(app-plus)可用,H5 和小程序环境会静默失败。它不返回 Promise,必须传成功和失败两个回调函数。最常踩的坑是:在用户还没同意隐私政策前就调用、没判断当前是否已授权就重复弹窗、对 deniedAlways 情况不做降级处理。

Android Remote Control
Android Remote Control

远程控制 Android 设备,支持截图、自动化操作手机 App 等功能。本应用使用 uiautomator2 作为底层框架,通过 ADB 连接设备,用户无需 Root(1)查看手机屏幕;(2)自动化操作手机 App;(3)远程安装/卸载应用……

下载
  • 调用前先用 plus.android.hasPermission("android.permission.CAMERA") 检查是否已有权限,避免无意义打扰
  • 回调里的 resultObj 有三个关键字段:granted(已授予权限数组)、deniedPresent(本次拒绝)、deniedAlways(勾选“不再提示”后永久拒绝)
  • 遇到 deniedAlways,必须引导用户去系统设置页:调用 plus.android.gotoSettings(),不能只弹个提示就卡住
  • 不要在 onLoad 里直接申请——等页面渲染完成、用户有心理预期后再触发,比如点击「开始录音」按钮时

为什么 uni.authorize() 在 Android 上基本不管用

uni.authorize() 是为微信小程序设计的兼容层,在 UniApp 的 Android 打包中不会触发系统权限弹窗,只会返回 fail: not supported 或静默失败。它底层不走 Android 的 requestPermissions 流程,也不读 manifest.json 配置。如果你看到文档里写了这个 API,注意上下文是否限定在小程序平台。

  • Android 端必须用 plus.android.requestPermissions(),这是唯一可靠的原生权限申请方式
  • uni.getSetting() 可以查当前授权状态,但它返回的是微信风格的 scope 映射(如 scope.camera),和 Android 原生权限名不对应,不能替代 hasPermission()
  • 某些插件(如 leven-permissions-PermissionModule)封装了更友好的接口,但底层仍是调用同一个原生方法,只是帮你做了状态判断和跳转封装

targetSdkVersion 和 Android 版本的隐性影响

你的 manifest.json 里没有显式配置 targetSdkVersion,HBuilderX 默认设为最新稳定版(目前是 33 或 34)。这意味着:即使你只申请一个权限,只要设备是 Android 6.0+,就必须走动态流程;而 Android 13(API 33)起,READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO 替代了旧的存储权限,且需单独申请——WRITE_EXTERNAL_STORAGE 在此版本后完全失效。

  • 别指望降级 targetSdkVersion 来绕过动态申请,主流应用市场(华为、小米、vivo)已强制要求 ≥30
  • Android 11+ 开始,ACCESS_BACKGROUND_LOCATION 需要额外在 AndroidManifest.xml 里声明 android:foregroundServiceType="location",UniApp 目前不支持该字段自动注入,需自定义基座或使用原生插件
  • 每次修改 manifest.json 后,必须重新云打包或自定义调试基座,热更新不生效

真正麻烦的不是写那几行代码,而是把「权限是否已获」、「用户点了拒绝还是永久拒绝」、「系统是否已禁用该权限入口」这三重状态在 UI 层做准确映射,并保持功能可降级。很多人卡在审核,问题不出在 API 调用,而出在拒绝后没提供替代路径,或弹窗文案没说明白“为什么需要这个权限”。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

uni-app android

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2543

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5483

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6510

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6138

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

863

5

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

60

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

20

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

20

10

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

20

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习