Flutter使用url_launcher调用Google Maps/Waze导航时出现net::ERR_UNKNOWN_URL_SCHEME错误的求助
解决url_launcher打开Google Maps/Waze时net::ERR_UNKNOWN_URL_SCHEME错误
我完全懂你碰到的这个问题——通过浏览器中转唤起地图应用时触发的URL scheme错误,本质是因为你当前用的是HTTP/HTTPS链接,而直接唤起原生地图应用需要使用它们专属的自定义URL scheme,浏览器没法正确解析这些非标准协议,所以才抛出了net::ERR_UNKNOWN_URL_SCHEME。下面给你分步解决的方案:
1. 替换为地图应用的自定义URL Scheme
放弃用HTTPS链接中转,直接使用各应用的原生scheme,这样就能跳过浏览器,直接唤起对应地图应用:
修改你的launchMaps函数
void launchMaps(double latitude, double longitude) async { final selectedMap = getSelectedMap(); String mapUrl; if (selectedMap == "waze") { // Waze原生唤起链接 mapUrl = 'waze://?ll=$latitude,$longitude&navigate=yes'; } else if (selectedMap == "google") { // Google Maps原生唤起链接(Android) mapUrl = 'googlemaps://?saddr=My+Location&daddr=$latitude,$longitude'; } else { // 默认 fallback到网页版 mapUrl = 'https://maps.google.com?saddr=My+Location&daddr=$latitude,$longitude'; } // 先检查是否能打开该scheme(即应用是否已安装) if (await canLaunchUrl(Uri.parse(mapUrl))) { // 用externalApplication模式确保唤起原生应用 await launchUrl(Uri.parse(mapUrl), mode: LaunchMode.externalApplication); } else { // 如果应用未安装,跳转网页版 String fallbackUrl = selectedMap == "waze" ? 'https://waze.com/ul?ll=$latitude,$longitude&navigate=yes' : 'https://maps.google.com?saddr=My+Location&daddr=$latitude,$longitude'; await launchUrl(Uri.parse(fallbackUrl)); } }
2. 配置Android包可见性(Android 11+必备)
从Android 11开始,系统限制了应用对其他应用的访问权限,你必须在AndroidManifest.xml里声明要唤起的地图应用包名,否则会唤起失败:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 其他现有配置 --> <queries> <!-- 声明Google Maps包名 --> <package android:name="com.google.android.apps.maps" /> <!-- 声明Waze包名 --> <package android:name="com.waze" /> </queries> </manifest>
3. (可选)iOS端配置
如果你的应用需要支持iOS,还需要在Info.plist里添加允许查询的URL schemes:
<key>LSApplicationQueriesSchemes</key> <array> <string>waze</string> <string>comgooglemaps</string> </array>
为什么之前的方式会报错?
当你打开HTTPS的地图链接时,浏览器的「在应用内继续」提示,本质是尝试通过地图应用的自定义scheme唤起App,但你的应用没有预先声明对这些scheme的访问权限(Android 11+的包可见性限制),导致系统无法识别这个scheme,最终抛出错误。直接使用原生scheme并配置好权限,就能绕过浏览器中转,直接唤起地图应用。
内容的提问来源于stack exchange,提问作者Kate Belson
相关产品推荐
相关产品推荐

