#android #uri
#Android #uri
Вопрос:
Есть ли какая-либо документация о принципах использования URI на платформе Android? Например, у меня есть приложение, которое позволяет пользователю читать определенные форумы. В нем есть несколько действий — одно для просмотра списка форумов, одно для просмотра списка тем, одно для просмотра списка сообщений и т.д.
Я хотел бы использовать иерархический URI в намерениях моих действий, чтобы указать, что должно отображаться в activity. Хорошая ли это идея? Если да, то каков наилучший способ сформулировать эти URI?
Например, должен ли я использовать свою собственную схему, такую как myforums:
или content:
scheme?
Ответ №1:
Используйте стандартные http URI для просмотра общедоступного веб-контента и настройте фильтр намерений на основе хоста / пути. Некоторые иллюстрации этого включают Android Market, который откроет ссылки на приложения на http://market.android.com при этом сам сайт будет открываться в любом браузере. Приложение YouTube также откроет прямые ссылки на видео.
Использование http URI означает, что общие ссылки на этот контент могут быть открыты из любого браузера на любой платформе, если ваше приложение отсутствует, но приложение может заменить его, когда оно есть, чтобы обеспечить более богатый или оптимизированный интерфейс.
Комментарии:
1. Спасибо. В каких случаях рекомендуется добавлять новые схемы?
2. Почти никогда. Смотрите RFC 4395 tools.ietf.org/html/rfc4395 Многие программы игнорируют этот процесс, но приводятся вполне практические причины не регистрировать новые схемы, в том числе: «Схемы URI представляют собой единое глобальное пространство имен; желательно избегать разногласий по поводу использования коротких мнемонических имен схем. По этим причинам неограниченная регистрация новых схем вредна. Новые схемы URI ДОЛЖНЫ иметь очевидную полезность для широкого интернет-сообщества, помимо того, что доступно с уже зарегистрированными схемами URI.» Будьте хорошим гражданином и не придумывайте новые схемы URI для своего мобильного приложения. 🙂
3. Вы должны знать, что этот подход устарел (к сожалению). Google выступает за использование «intent: //» вместо «http: //», что меняет всю концепцию (поскольку вы не можете полагаться на браузер для обработки ссылки, если ваше приложение больше не установлено). Смотрите developers.google.com/chrome/mobile/docs/intents . Хорошо то, что ссылки «intent: //» могут содержать пакет вашего приложения, поэтому запись вашего приложения в Google Play будет открыта, если приложение не установлено.
4. Идея обработки http: // URI в устаревшем обработчике intent полностью ложна. Если ваше приложение способно просматривать представление данных по заданному http URI, нет ничего плохого в обработке соответствующего намерения вообще. Страница, на которую вы ссылаетесь, актуальна, если есть намерение, которое вы хотели бы вызвать со страницы, которая только имеет смысл в контексте приложения Android и семантически не соответствует идее просмотра содержимого по http URI в более богатом контексте в вашем приложении.