5

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

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);
    }

但在某些情况下,我没有发现任何活动来处理意图崩溃。我在这里做错了什么。

4

1 回答 1

7

我想你应该检查这个包是这样安装

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

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

或者您可以通过以下方式检查应用程序是否可用:

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);
于 2018-04-18T11:36:16.990 回答