【问题标题】:No Activity found to handle Intent { act=android.intent.action.VIEW dat=google.navigation:q=17.399986,78.483137 pkg=com.google.android.apps.maps }未找到处理 Intent 的活动 { act=android.intent.action.VIEW dat=google.navigation:q=17.399986,78.483137 pkg=com.google.android.apps.maps }
【发布时间】:2018-09-28 15:02:52
【问题描述】:

我正在尝试使用以下代码启动地图。

public static void navigate(Context context, double lat, double lon) {
        String locationQuery = lat + "," + lon;
        Uri gmmIntentUri = Uri.parse("google.navigation:q=" + locationQuery);
        Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
        mapIntent.setPackage("com.google.android.apps.maps");
        context.startActivity(mapIntent);
    }

但在某些情况下,我没有找到处理意图崩溃的活动。我在这里做错了什么。

【问题讨论】:

  • 你说在某些情况下,你是指不同的设备还是不同的纬度/经度值?
  • 它是随机的。无法确定它是否适用于某些纬度或设备。它适用于不同的设备
  • 您是在强制使用 com.google.android.apps.maps 包,所以可能是因为用户没有安装此应用,或者您生成的链接已损坏,无法谷歌地图(或设备上的任何其他应用程序)理解
  • 那么如果没有安装地图我们如何处理意图
  • 不能通过用户浏览器打开地图吗?

标签: android google-maps activitynotfoundexception


【解决方案1】:

我认为你应该检查这个包是否像this 一样安装

private boolean isPackageInstalled(String packagename, PackageManager packageManager) {
    try {
        packageManager.getPackageInfo(packagename, 0);
        return true;
    } catch (NameNotFoundException e) {
        return false;
    }
}

如果不是,则打开网络版本。或者查看谷歌地图文档。 AFAIK 有一种方法可以处理它。

或者您可以通过这种方式检查应用是否可用:

if (mapIntent.resolveActivity(getPackageManager()) != null) {
    ...
}

如果未安装应用程序,您可以:

1.将用户重定向到 Google Play

2.在浏览器中打开地图。

String uri = "http://maps.google.com/maps?saddr=" + sourceLatitude + "," + sourceLongitude + "&daddr=" + destinationLatitude + "," + destinationLongitude;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多