【升级打怪实录】uniapp - android 静态声明权限和动态请求权限的区别
在 UniApp 的 manifest.json
中已配置了 RECORD_AUDIO
、CAMERA
、ACCESS_FINE_LOCATION
权限,为何还需在代码中调用 plus.android.requestPermissions()
动态申请?
// manifest.json android 权限配置
"android" : {"permissions" : ["<uses-permission android:name="android.permission.RECORD_AUDIO"/>","<uses-permission android:name="android.permission.CAMERA"/>","<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>",]
}
答:
- Android 6.0+ (API ≥23)对敏感权限(如摄像头、麦克风、定位)需运行时动态申请,必须由用户主动授权,仅静态声明(
manifest.json
)无法直接生效;低版本(Android ≤5.1)无需动态申请,安装时默认授予。 - 这三个权限属于“危险权限”,涉及用户隐私,必须动态请求用户授权。
- UniApp 最终会将
manifest.json
中的权限声明写入生成的AndroidManifest.xml
文件,但 仅静态声明权限不足以在 Android 6.0+ 设备上实际获得权限。必须在代码中调用plus.android.requestPermissions()
向用户请求授权。
plus.android.requestPermissions() 说明文档