Подтвердить что ты не робот

Намерение начать навигационную деятельность

В моем приложении у меня есть возможность начать навигацию по выбранной POI. В основном я хочу запустить навигатор пошагового ввода из моего приложения. Дело в том, что я не знаю, какой (если есть) навигатор установлен.

Итак, возникает вопрос, как начать намерение, сначала указав список подходящих действий для навигации для пользователя, разрешив ему выбрать, какой из них он хотел бы использовать? Также было бы неплохо найти способ передать дополнительные параметры для выбранной активности (это звучит для меня как проблема, поскольку, как я полагаю, различные приложения для навигации используют разные имена для своих дополнительных функций).

В случае, если это не ясно: я ищу способ отобразить список подходящих приложений для навигации с опцией для создания одного по умолчанию.

EDIT: найдите здесь реализацию http://datamoil.blogspot.com/2011/04/android-universal-intent-to-start.html

4b9b3361

Ответ 1

Плохая новость заключается в том, что для навигации нет стандартного URI Intent.

Да, существуют URI google.navigation, и приложение может выбрать его поддержку.

Лучшее решение, о котором я могу думать, это:

  • Явная проверка известных приложений
  • Неявно проверьте, что приложения подключаются к google.navigation: и, возможно, geo: (но тогда вы также получаете приложения для карт)

Вы можете перечислить возможные неявные цели, используя PackageManage.queryIntentActivities

Ответ 2

Try:

Intent intent = new Intent(Intent.ACTION_VIEW, 
    Uri.parse("google.navigation:q=New+York+NY")); 
startActivity(intent);

Ответ 3

Сначала я использовал метод onTap внутри прослушивателя кнопок:

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("google.navigation:q=New+York+NY")); 
mContext.startActivity(i);

Тогда в манифесте просто используйте:

<activity android:name=".LaunchGPS" android:screenOrientation="portrait">
  <intent-filter>       
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</activity>

Это откроет любое приложение Navigator, которое имеет ваш телефон, например, VZ Navigagtor, Google или любой другой телефон, на который он загружен. Работала для меня в первый раз отлично. Надеюсь, это решает вашу проблему.

Ответ 4

Я нашел больше преимуществ с помощью этого кода (только для отображения доступных приложений навигатора)

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:"));
if (intent.resolveActivity(getActivity().getPackageManager()) != null)   {
    startActivityForResult(Intent.createChooser(intent, "Continues with:", CHOOSE_NAVIGATOR_ID);
} else {
   // Handle failure...
}