Хотя текущие ответы великолепны, ни один из них не сделал то, что я искал, я хотел открыть только приложение карт, добавить имя для каждого исходного местоположения и пункта назначения, используя схему гео URI работать на меня вообще, и у веб-ссылки карт не было ярлыков, поэтому я придумала это решение, которое, по сути, объединяет другие решения и комментарии, сделанные здесь, надеюсь, это будет полезно для других, просматривающих этот вопрос.
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.setPackage("com.google.android.apps.maps");
startActivity(intent);
Чтобы использовать ваше текущее местоположение в качестве отправной точки (к сожалению, я не нашел способа обозначить текущее местоположение), используйте следующую команду:
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.setPackage("com.google.android.apps.maps");
startActivity(intent);
Для полноты, если у пользователя нет установленного приложения карт, будет хорошей идеей перехватить ActivityNotFoundException, тогда мы сможем начать действие снова без ограничения приложения карт, мы можем быть уверены, что мы никогда не попадет на тост в конце, так как интернет-браузер является допустимым приложением для запуска этой схемы 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.setPackage("com.google.android.apps.maps");
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();
}
}
P.S.
Любые широты или долготы, использованные в моем примере, не являются репрезентативными для моего местоположения, любое сходство с истинным местоположением является чистым совпадением, иначе я не из Африки: P
EDIT:
Для указаний теперь поддерживается навигация с помощью google.navigation
Uri navigationIntentUri = Uri.parse("google.navigation:q=" + 12f +"," + 2f);//creating intent with latlng
Intent mapIntent = new Intent(Intent.ACTION_VIEW, navigationIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);