Не найдено действий для обработки намерений { act=android.intent.action.VIEW dat=google.navigation:q=17.399986,78.483137 pkg=com.google.android.apps.maps }
Я пытаюсь запустить карты, используя следующий код.
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);
}
Но в некоторых случаях я не получаю никакой активности для обработки намеренного сбоя. Что я здесь не так делаю.
1 ответ
Я думаю, вы должны проверить, установлен ли этот пакет следующим образом
private boolean isPackageInstalled(String packagename, PackageManager packageManager) {
try {
packageManager.getPackageInfo(packagename, 0);
return true;
} catch (NameNotFoundException e) {
return false;
}
}
А если нет, тогда откройте веб-версию. Или посмотрите документы Google Maps. 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);