Установка значений по умолчанию для ссылок

Я был смущен тем, как это работает для цитаты некоторое время назад - когда я нажимаю ссылку, скажем, в браузере (например, Chrome) и получаю диалоговое окно «открыть с помощью», если хотите, если я решил сохранить значение по умолчанию для ссылки на карты Google это установит по умолчанию ВСЕ ссылки на карты Google, эту конкретную ссылку, или я что-то упустил?

Я часто боюсь устанавливать значения по умолчанию, потому что я не совсем понимаю, для чего я на самом деле устанавливаю значения по умолчанию — для доменного имени?

Я был бы признателен за любые советы, ссылки на документацию или предложения приложений, чтобы сделать это более понятным для меня. Спасибо!

Я не уверен на 100%, правильно ли я вас понял. Вас не спрашивают о каждой ссылке (большинству следует просто открыть связанную страницу в браузере), не так ли? Это должно происходить только для целей, которые браузер не может обработать сам, а затем вы можете настроить приложение по умолчанию для обработки этого типа mime , независимо от домена/веб-сайта/страницы, с которого он исходит. По сути, он говорит: «Открывайте файлы MP3 всегда с помощью [моего проигрывателя], например, больше не просите меня выбрать».
@Izzy Это касается не только целей, с которыми браузер не может справиться сам: это касается любого URL-адреса, с которым может справиться более одного приложения. Ссылки на YouTube являются обычным примером. Для веб-ссылок это обычно URL, а не тип MIME, потому что браузер не знает тип MIME, пока вы не перейдете по ссылке.
Хороший пример – вы абсолютно правы! Я просто не могу вспомнить, чтобы это происходило для «обычных» ссылок ( text/html), когда доступно несколько браузеров, так что это каким-то образом кажется исключением?

Ответы (1)

Краткий ответ: да, это для всех ссылок Google Maps.

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

  • конкретная схема URI, напримерmarket://
  • конкретный домен, напримерyoutube.com
  • пути в домене, соответствующие определенному фильтру, например/users/*

Приложения также могут фильтровать другие вещи, не имеющие отношения к переходу по ссылке, такие как различные действия (например, совместное использование) или разные типы MIME. Одно приложение может иметь более одного фильтра, и один фильтр может соответствовать любой комбинации вышеперечисленных вещей. Например, приложение YouTube может иметь один фильтр, который соответствует всем этим условиям:

  • схема такая http://илиhttps://
  • доменyoutube.com
  • путь совпадаетwatch?v=*

и другой, который соответствует при соблюдении всех этих условий:

  • схема такая http://илиhttps://
  • домен youtu.be(домен для коротких URL)

В этом случае необходимо установить два разных значения по умолчанию: при первом нажатии на ссылку http://www.youtube.com/watch?v=DJRFaR71HfYбудет установлено значение по умолчанию для этого типа ссылки. Затем, если вы позже нажмете на http://youtu.be/DJRFaR71HfY, он спросит второй раз, потому что это считается ссылкой другого типа.

В случае Google Maps существует несколько различных типов ссылок, которые он может обрабатывать (а также другие фильтры намерений, не относящиеся к ссылкам):

  • geo://*
  • latitude://*
  • http://maps.google.tld/или https://maps.google.tld/(ничего после /) для каждого TLD, который есть у Google (google.com, google.fr и т. д.)
  • http://maps.google.tld/maps*илиhttps://maps.google.tld/maps*
  • http://mapy.google.pl/или https://mapy.google.pl/("mapy" по-польски означает "карты")
  • http://mapy.google.pl/maps*илиhttps://mapy.googl.pl/maps*
  • http://local.google.com/илиhttps://local.google.com/
  • http://local.google.com/maps*илиhttps://local.google.com/maps*
  • http://m.google.com/latitudeилиhttps://m.google.com/latitude
  • http://www.google.com/latitudeилиhttps://www.google.com/latitude
  • http://m.google.com/u/m/*илиhttps://m.google.com/u/m/*

Каждая из этих строк считается ссылкой другого типа, поэтому Android спросит еще раз. Кроме того, все, кроме первого, имеют две отдельные записи: одну для открытия или просмотра ссылки обычным способом, а другую для сканирования метки NFC (или получения Android Beam) соответствующей ссылки. Опять же, эти две вещи считаются разными ссылками для целей установки значений по умолчанию.


Чтобы получить эту информацию из приложения Google Maps, я использовал приложение PackageExplorer . Информация, которую он дает вам, требует некоторых знаний для интерпретации: вам может пригодиться руководство по API намерений Android для разработчиков .

Спасибо за исчерпывающую информацию, Дэн! Есть ли у вас какие-либо предложения по управлению или отображению этого уровня детализации на телефоне? Я видел asp под названием Default Manager, но, судя по обзорам, которые я видел, это не кажется жизнеспособным решением.
@ Курт, я бы посоветовал не беспокоиться. Если вы не пишете свое собственное приложение или что-то вроде сценария Tasker, который должен взаимодействовать с этим конкретным приложением, проще просто позволить системе работать так, как задумано. Тем не менее, я обновил свой ответ, чтобы добавить эту информацию.
У вас есть альтернативная ссылка для PackageExplorer? Нынешний умер.