我正在互联网上搜索如何在我的Android应用程序中打开我在我的Android设备上使用按钮安装的Google地图应用。但我找不到它。我想使用谷歌地图应用程序导航到某个地方。你可以给我一个教程,一些代码或网站链接吗?
答案 0 :(得分:3)
您也可以使用http://maps.google.com/maps作为您的URI
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f", sourceLatitude, sourceLongitude, destinationLatitude, destinationLongitude);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);
或确保仅使用Google地图应用,这会阻止意图过滤器(对话框)显示使用
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
像这样:
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f", sourceLatitude, sourceLongitude, destinationLatitude, destinationLongitude);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
或通过在每组坐标后面的括号内添加一个字符串来为位置添加标签,如下所示:
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?saddr=%f,%f(%s)&daddr=%f,%f (%s)", sourceLatitude, sourceLongitude, "Home Sweet Home", destinationLatitude, destinationLongitude, "Where the party is at");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
要将用户当前位置用作起点(遗憾的是我还没有找到标记当前位置的方法),请按以下方式删除saddr
参数:
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?daddr=%f,%f (%s)", destinationLatitude, destinationLongitude, "Where the party is at");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
为了完整性,如果用户没有安装地图应用程序,那么捕获ActivityNotFoundException是一个好主意,就像@TonyQ所述,然后我们可以在没有地图应用限制的情况下再次启动活动,我们可以非常肯定我们最终永远不会去Toast,因为互联网浏览器也是启动这个url方案的有效应用程序。
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?&daddr=%f,%f (%s)", 12f, 2f, "Where the party is at");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
try
{
startActivity(intent);
}
catch(ActivityNotFoundException ex)
{
try
{
Intent unrestrictedIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(unrestrictedIntent);
}
catch(ActivityNotFoundException innerEx)
{
Toast.makeText(this, "Please install a maps application", Toast.LENGTH_LONG).show();
}
}
答案 1 :(得分:0)
或者,要检查您的设备中是否安装了Google地图应用,您可以使用以下代码:
if (intentLocation.resolveActivity(getPackageManager()) != null) {
startActivity(intentLocation);
} else {
Toast.makeText(this, R.string.app_not_available,
Toast.LENGTH_LONG).show();
//或者如果您使用
View.OnClickListener
使用YourActivity.this
Toast.makeText(YourActivity.this, R.string.app_not_available,
Toast.LENGTH_LONG).show();
}
答案 2 :(得分:0)
我知道这是一种不同的语言,但你可以从我在android shell上取得的内容中扣除如何使用你的语言:
这显示地图,没有标记:
am start -a android.intent.action.VIEW -d geo:47.6,-122.3
这会显示带有标记的地图:
am start -a android.intent.action.VIEW -d geo:47.6,-122.3?q=47.6,-122.3
然后我终于明白了:
am start -a android.intent.action.VIEW -d google.navigation:q=47.6,-122.3