Навигация с помощью Waze и Google Maps с использованием Intent.createChooser показывает значок Waze дважды
Я создаю этот вопрос после нахождения ответа, я не был уверен насчет этикета, но, похоже, все в порядке (плюс, я вижу, теперь есть встроенная опция).
Проблема была в том, как описано в заголовке, мы создали средство выбора намерений, используя код, похожий на этот:
String url = "waze://?ll=" + latitude + ", " + longitude + "&navigate=yes";
Intent intentWaze = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
String uriGoogle = "google.navigation:q=" + latitude + "," + longitude;
Intent intentGoogleNav = new Intent(Intent.ACTION_VIEW, Uri.parse(uriGoogle));
String title = context.getString(R.string.title);
Intent chooserIntent = Intent.createChooser(intentGoogleNav, title);
Intent[] arr = new Intent[1];
arr[0] = intentWaze;
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, arr);
context.startActivity(chooserIntent);
И получил две иконки Waze и одну иконку Google Maps; и что еще хуже, один из значков Waze не запустил навигацию (только откройте приложение).
Мы не могли использоватьgeo:
намерение, потому что нам нужно контролировать показанные намерения (мы не хотим показывать оба намерения всегда) и тип навигации в Картах Google (например: &mode=w
).
1 ответ
Через некоторое время я воспользовался найденным здесь решением, и только один значок работал правильно. Как я писал в этом вопросе, я не мог использовать это решение, потому что ему не хватает необходимой мне гибкости, поэтому, посмотрев код, я увидел, что чего-то не хватает:
intentWaze.setPackage("com.waze");
// and more importantly, this:
intentGoogleNav.setPackage("com.google.android.apps.maps");
Кажется, что Waze слушает намерение Google Maps (и не работает с ним), и поэтому было две иконки.