有一些类似的帖子,但我找不到一个确切的帖子.基本上,我想以同样的意图打开Google地图和Waze.起初我试过这个:
final String uri = String.format(Locale.ENGLISH, "geo:%f,%f", latitude, longitude);
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);
Waze直接导航到正确的位置,Google地图打开了正确的位置.然后我意识到谷歌地图没有在该位置放置一个引脚,因此用户很难知道它到底在哪里.所以我环顾四周并意识到Google地图需要“?q = ..(标签)”…我将uri构造更改为:
final String uri = String.format(Locale.ENGLISH, "geo:%f,%f?q=%f,%f (%s)", latitude, longitude, latitude, longitude, name);
但随后Waze做了两件事:导航到正确的地方并在标签上搜索.这要求用户单击后退按钮以关闭搜索结果屏幕并保持导航到正确的位置.
我到处寻找答案,但未能找到能够实现两者的解决方案.
起初我认为这是不可能的,Waze有一个错误……但后来我注意到Facebook的信使正在做我想要的.当点击带有位置的消息时,它将打开两个应用程序:Google地图将有一个引脚(带有标签),Waze将直接导航到该位置而不运行搜索.
关于上述问题的几个问题:
1.(当然)我怎样才能做到这一点?
2.我怎么知道Facebook Messenger的意图是如何构建的? (无论如何我可以抓住它)
3.标签只有“?q = ..”的原因是什么?
谢谢
解决方法:
没关系.我能够使用下面的应用拦截Facebook Messenger,并认为URI应如下所示:
String.format(Locale.ENGLISH, "geo:0,0?q=") + android.net.Uri.encode(String.format("%s@%f,%f", label, latitude, longitude), "UTF-8");
谢谢