【问题标题】:Launching Google Maps and Navigator from Android App从 Android 应用程序启动 Google 地图和导航器
【发布时间】:2011-03-31 20:32:56
【问题描述】:

我有一个安卓应用程序,它允许用户打开谷歌地图或导航器来显示某个地址。此功能过去可以正常工作,但现在我收到以下错误并且应用程序崩溃:

ERROR/AndroidRuntime(2165): android.content.ActivityNotFoundException: 没有找到处理 Intent 的活动 { act=android.intent.action.VIEW dat=google.navigation:q=MCNAMARA+TERMINAL+ROMULUS+MI+48174 }

我使用的两个意图是-

1) 对于地图:

    String uri = "geo:0,0?q=MCNAMARA+TERMINAL+ROMULUS+MI+48174";        
    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
    startActivity(i); 

2) 对于导航器:

    String uri = "google.navigation:q=MCNAMARA+TERMINAL+ROMULUS+MI+48174";
    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
    startActivity(i); 

【问题讨论】:

  • 你能定义“现在”吗?发生了什么?你升级你的安卓操作系统了吗?不同的手机?

标签: android uri android-intent navigator


【解决方案1】:

您的第一个 Intent 在许多设备上应该都可以,因为那是 documented and supported

您的第二个 Intent 既没有记录也不支持 AFAIK,因此您不应该使用它。

另外,请记住,并非所有 Android 设备都配备 Google 地图或导航。使用PackageManagerqueryIntentActivities() 确定是否有任何东西会响应您的Intent,然后根据需要禁用 UI 路径以防止用户遇到异常。

【讨论】:

  • 那个,和/或添加异常处理以在活动无法启动时通知用户(并建议可能不安装必要的应用程序)。
  • 这可能是第二个意图没有记录,因为它调用的导航应用程序仍处于测试阶段。我认为意图系统应该通知用户他们的设备上是否没有安装应用程序来支持请求的意图。也许在这种情况下,我们必须自己捕捉错误,并可能将用户转发到好的地图网页。
【解决方案2】:

启动 Navigator 的意图:

Intent navigation = new Intent(Intent.ACTION_VIEW, Uri.parse(“http://
maps.google.com/maps?
saddr=42.35892,-71.05781&daddr=40.756054,-73.986951”));
 startActivity(navigation);

更多详情请见here

【讨论】:

  • 这似乎对在浏览器中启动谷歌地图导航很有好处,但 OP 想要调用本机 Google Navigator 应用程序
猜你喜欢
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
相关资源
最近更新 更多