Android намерен открыть как карты Waze, так и Google

Есть несколько подобных сообщений, но я не мог найти точного. В основном, я хочу открыть как карты Google, так и Waze с тем же намерением. Сначала я попробовал это:

final String uri = String.format(Locale.ENGLISH, "geo:%f,%f", latitude, longitude); final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); startActivity(intent); 

Waze переместился прямо в нужное место, и карты Google открыли нужное место. То я понял, что карты Google не помещают булавку в местоположение, поэтому пользователю трудно узнать, где именно. Поэтому я огляделся и понял, что для карт Google требуется «? Q = .. (label)» для этого … Я сменил конструкцию uri на:

 final String uri = String.format(Locale.ENGLISH, "geo:%f,%f?q=%f,%f (%s)", latitude, longitude, latitude, longitude, name); 

Но затем Waze сделал 2 вещи: переместился в нужное место и выполнил поиск на лейбле. Это потребовало от пользователя нажать кнопку «Назад», чтобы закрыть экран результатов поиска и остаться с навигацией в нужном месте.

Я везде искал ответ, но не смог найти решение, которое достигнет обоих. Сначала я думал, что это невозможно, и у Waze есть ошибка … но потом я заметил, что Facebook-мессенджер делает именно то, что я хочу. При нажатии на сообщение с местоположением он откроет оба приложения: карты Google будут иметь булавку (с меткой), а Waze будет перемещаться прямо в это место, не выполняя поиск.

Немногие вопросы по поводу вышеизложенного: 1. (Конечно) Как я могу это достичь? 2. Как я могу узнать, как строится намерение Facebook-мессенджера? (Могу ли я его поймать в любом случае). 3. В чем причина наличия метки только с помощью «? Q = ..»?

благодаря

Solutions Collecting From Web of "Android намерен открыть как карты Waze, так и Google"

Неважно. Я смог перехватить Facebook-мессенджер с приведенным ниже приложением и понял, что URI должен быть следующим:

 String.format(Locale.ENGLISH, "geo:0,0?q=") + android.net.Uri.encode(String.format("%s@%f,%f", label, latitude, longitude), "UTF-8"); 

Приложение: https://play.google.com/store/apps/details?id=uk.co.ashtonbrsc.android.intentintercept&feature=search_result#?t=W251bGwsMSwyLDEsInVrLmNvLmFzaHRvbmJyc2MuYW5kcm9pZC5pbnRlbnRpbnRlcmNlcHQiXQ ..

благодаря

Следуя совету Нимрода, я установил приложение и перехватил намерение с помощью функции местоположения whatsapp. Вот полный Intent, проверенный на картах и ​​waze:

  String uri = "http://maps.google.com/maps?q=loc:"+latitude+","+longitude+" ("+label+")"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); intent.setFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); intent.setData(Uri.parse(uri)); startActivity(intent);