如何添加 Android 意图以在 Cordova/Ionic 项目中打开 google 地图?

How to add Android intent to open google maps in Cordova/Ionic project?

Android API 30 (Android 11) 需要应用程序清单中定义的额外权限才能打开其他应用程序(Google 地图在我的例子中)。但是,如果 <manifest> 元素在 Ionic/Cordova 项目中不可用,我如何才能在我的项目中获得此权限?我有一个 config.xml 文件,其中列出了 Android 和 iOS 的权限,但我不知道在哪里添加此权限。

已说过此 API 更改需要在 <manifest>

中添加权限

在我的 Ionic 5 项目中,我只能编辑一个 config.xml 文件,如下所示:

    <platform name="android">
        <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" />
            <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:*" />

我试过添加建议的 <queries> 元素,但这不起作用。我正在单击 UI 中的地址并使用 Ionic Launch Navigator 插件打开 Google 地图。它适用于 Android API 29 但不适用于 API 30.

如何添加在 Android 中打开 Google 地图的权限?

window.open(URL) 将在 Android 11 上运行以打开 Google 地图,无需更改权限或 API 密钥。 See help article.

本文介绍了如何构建 URL 以跨平台方式打开 google 地图,并支持查找位置和导航。我不必弄乱权限或 AndroidManifest.xml 或 Cordova 元素。

在挖掘过程中,我使用了 Ionic 建议的 Launch Navigator 插件,该插件打开 Google 地图时略有不同,并且由于 Android 11 权限更改,此插件现在需要 Intent 权限,我可以想不通并放弃了 launch-by-url 格式。