6***@qq.com
6***@qq.com
  • 发布:2026-05-19 15:49
  • 更新:2026-05-19 15:50
  • 阅读:24

安卓11以上使用位置权限一直是deniedAlways:["ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION]}

分类:HBuilderX

Android 11以上版本,获取位置权限是一直是永久拒绝,去设置里,当前app的权限应就没有位置 这个权限,只有相机等其他的权限。

{"granted":[],"deniedPresent":[],"deniedAlways":["android.permission.ACCESS_FINE_LOCATION","android.permission.ACCESS_COARSE_LOCATION"]}

9版本一下都可以正常获取位置权限

2026-05-19 15:49 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( HBuilderX技术交流群 ) 咨询,群中有相关专业的管理员和群友。

根据你的描述,Android 11 及以上系统调用 plus.android.requestPermissions 请求定位权限后,返回 deniedAlways,并且进入系统设置“应用权限”页面时找不到位置权限选项。这通常意味着打包后的 APK 清单文件中根本没有声明 ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION 这两个权限,即便你在代码中动态请求,系统也不会展示授权弹窗并直接标记为永久拒绝。

? 原因分析

  • plus.android.requestPermissions 请求任何权限的前提是 APK 的 AndroidManifest.xml 中已静态声明该权限。如果没有声明,请求会立即失败并进入 deniedAlways,系统设置里自然也看不到该权限入口。
  • 在低版本 HBuilderX 或旧工程中,可能因为配置了定位/地图模块而自动带上了位置权限;但升级 HBuilderX 或调整工程后,如果没有在 manifest.json 中显式勾选,打包时就会漏掉这两个权限声明。
  • 你提到“9 版本以下都可以正常获取”,大概率是旧版本的模块自动配置策略发生了变化,现在需要手动确认。

✅ 解决方法

1. 在 manifest.json 中显式勾选位置权限

打开项目的 manifest.json,切换到「App模块权限配置」,找到「Android权限配置」部分,同时勾选以下两项:

  • android.permission.ACCESS_FINE_LOCATION
  • android.permission.ACCESS_COARSE_LOCATION

(即使你只用粗略位置,Android 11+ 也建议两个都勾选,保证兼容性)

2. 重新打包

  • 如果是标准基座调试,请制作自定义调试基座(菜单「运行」->「制作自定义调试基座」)后再真机运行,标准基座可能不包含你手动添加的权限。
  • 如果是正式发版,直接进行云打包(发行 -> 原生App-云打包),确保打包后的 APK 包含了上述权限声明。

3. 清理并重新安装应用

部分系统可能缓存了旧权限状态,卸载 App 后重新安装新的 APK,再进入系统设置即可看到位置权限选项。

? 补充说明

  • 如果你的应用同时需要后台定位(Android 10+ 的后台位置权限),还需额外勾选 android.permission.ACCESS_BACKGROUND_LOCATION,并且不能只用“仅在使用中允许”,需要引导用户选择“始终允许”。
  • 如果你使用了高德或百度地图模块,它们通常会自动带上位置权限。如果之前用了地图模块、后来移除了,则位置权限也会丢失,需要手动补上。

官方权限配置文档参考:App模块(三方SDK)的权限列表 以及 引导用户授权定位权限


如果确认 manifest 已勾选且打包后问题依旧,请检查是否使用了离线打包,需要在离线打包的 AndroidManifest.xml 中手动添加:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

完成以上步骤后,plus.android.requestPermissions 就能正常弹出系统授权框了。

内容为 AI 生成,仅供参考

要回复问题请先登录注册