Flutter骑手App点击谷歌地图链接时未显示disambiguation dialog
解决Flutter骑手App不显示谷歌地图链接选择弹窗的问题
Android 端关键配置
- 在
AndroidManifest.xml的主Activity中添加针对谷歌地图链接的Intent Filter,覆盖所有相关协议和链接类型:<activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop"> <!-- 新增谷歌地图链接处理配置 --> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 处理geo协议的定位链接 --> <data android:scheme="geo" /> <!-- 处理谷歌地图App专属链接 --> <data android:scheme="googlemaps" /> <!-- 处理网页端谷歌地图链接 --> <data android:scheme="https" android:host="maps.google.com" /> </intent-filter> </activity> - 避免使用
singleInstance启动模式,该模式会让系统直接唤起App而不显示选择弹窗。 - 用ADB命令测试:
adb shell am start -a android.intent.action.VIEW -d "geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+CA",观察是否弹出选择弹窗。
iOS 端关键配置
- 在
Info.plist中添加允许查询的谷歌地图相关Scheme:<key>LSApplicationQueriesSchemes</key> <array> <string>geo</string> <string>googlemaps</string> </array> - 添加URL Scheme配置,让系统识别App可处理的链接类型:
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>geo</string> <string>googlemaps</string> </array> </dict> </array> - 在Safari中打开
geo:0,0?q=New+York链接,测试是否弹出App选择弹窗。
通用排查要点
- 确保设备上同时安装了你的骑手App和谷歌地图App,若只有你的App能处理该链接,系统会直接唤起,不会显示选择弹窗。
- 检查配置文件中的Scheme、Host拼写是否完全正确,注意大小写敏感。
- 确认App没有被系统限制权限,比如“默认应用”设置中未被排除。
- Dynamic Link主要用于Firebase生成的自定义链接,谷歌地图原生链接需通过上述Intent Filter/URL Scheme配置处理,两者配置不冲突但需区分。
内容的提问来源于stack exchange,提问作者Tom P Varghese
相关产品推荐
相关产品推荐

