如何在Cordova/Ionic项目中添加打开谷歌地图的Android intent权限
解决Ionic/Cordova Android 11(API 30)无法打开谷歌地图的配置方案
你当前配置不生效的核心原因是<queries>元素放错了节点。Android 11要求的包可见性声明<queries>必须是AndroidManifest.xml中<manifest>根节点的直接子元素,你现在把它嵌套在了<application>节点下,系统无法识别该配置。
正确配置步骤
1. 修改config.xml中安卓平台的配置
先删除原来写在<application>节点下的<queries>相关代码,新增单独针对manifest根节点的edit-config配置,修改后的完整安卓平台配置参考如下:
<platform name="android"> <!-- 原有application节点的配置保留,删除内部嵌套的queries代码 --> <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android"> <application android:networkSecurityConfig="@xml/network_security_config" /> </edit-config> <!-- 新增单独的queries配置,target指向manifest根节点 --> <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest" xmlns:android="http://schemas.android.com/apk/res/android"> <queries> <package android:name="com.google.android.apps.maps" /> </queries> </edit-config> <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" /> <allow-intent href="market:*" /> <!-- 原有其他安卓配置保持不变 --> </platform>
2. 检查Cordova Android平台版本
要支持<queries>节点,需要你的项目cordova-android平台版本 ≥ 10.0.0,执行以下命令查看当前版本:cordova platform ls
如果版本低于要求,执行以下命令升级:cordova platform rm android && cordova platform add android@latest
3. 清理缓存重新构建
配置修改完成后,务必清理旧的构建缓存后再打包:ionic cordova build android --clean
如果还是不生效,可以直接删除项目根目录下的platforms/android文件夹,再重新添加安卓平台后构建。
额外排查点
如果配置完成后依旧无法调起谷歌地图,可以检查Ionic Launch Navigator插件版本,升级到最新版即可,部分旧版插件本身未适配Android 11的包可见性规则。
内容的提问来源于stack exchange,提问作者Paul G
相关产品推荐
相关产品推荐

