打开我的自定义android应用程序的路线后打开Goog​​le地图后,如何修复应用程序终止

时间:2019-04-05 07:51:31

标签: android google-maps

打开带有自定义片段指示的google map活动后,它会终止整个应用程序。

mapView.startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse(“ http://maps.google.com/maps?saddr=” + currlat +“,” + currLon +“&daddr =” + destinationLat +“,” + destinationLon +“&travelmode = driving”)) );

在这里mapView表示我的自定义fragmnet。

2 个答案:

答案 0 :(得分:0)

 Intent intent = new Intent(Intent.ACTION_VIEW,
                                Uri.parse("http://maps.google.com/maps?saddr=" + lastLocation.getLatitude() + "," + lastLocation.getLongitude() + "&daddr=" +
                                        destinationLocationLatitude + "," +
                                        destinationLocationLongitude));
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);

答案 1 :(得分:0)

google developer doc中有一个示例,您在其中使用geo:URI而不是url

此URI的工作方式如下:

  

使用geo:意向在指定位置和缩放级别显示地图。

geo:latitude,longitude?z=zoom

这里是使用它的代码。此外,它还可以确保Google Maps能够接收它而不是其他应用程序,并且如果未安装Maps,它什么也不会做,但是您可以添加else语句来告诉用户他需要Maps来执行操作

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(mapIntent);
}

要启动导航,请使用google.navigation:q=latitude,longitude。起始位置将是用户当前位置。参见Google开发者网站的this part

Uri gmmIntentUri = Uri.parse("google.navigation:q=37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(mapIntent);
}