Заставить ссылку в браузере Android запустить мое приложение?

Это возможный сделать ссылку, такую как:

<a href="anton://useful_info_for_anton_app">click me!</a>

заставить мое приложение Anton запускать?

Я знаю, что это работает на приложение Android Market с протоколом рынка, но может что-то подобное быть сделанным с другими приложениями?

Вот пример ссылки, которая запустит Android Market:

<a href="market://search?q=pname:com.nytimes.android">click me!</a>

Обновление: ответ, который я принял обеспеченный eldarerathis, работает отлично, но я просто хочу упомянуть, что я испытал некоторые затруднения из-за порядка подэлементов <intent-filter> тег. Я предлагаю, чтобы Вы просто сделали другого <intent-filter> с новыми подэлементами в том теге для предотвращения проблем я имел. Например, мой AndroidManifest.xml похож на это:

<activity android:name=".AntonWorld"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <data android:scheme="anton" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
220
задан Anton 12 August 2010 в 07:55
поделиться

2 ответа

Думаю, вы захотите посмотрите на элемент в вашем файле Mainfest. В частности, взгляните на документацию для подэлемента .

По сути, вам нужно определить свою собственную схему. Что-то вроде:

<intent-filter>
    <data android:scheme="anton" />
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" /> <--Not positive if this one is needed
    ...
</intent-filter>

Тогда вы сможете запустить свое приложение со ссылками, которые начинаются со схемы URI anton: .

94
ответ дан 23 November 2019 в 04:07
поделиться

Пожалуйста, НЕ используйте свою собственную схему таким образом!!! Схемы URI - это сетевое глобальное пространство имен. Вы владеете схемой "anton:" во всем мире? Нет? Тогда НЕ используйте ее.

Один из вариантов - иметь веб-сайт, и на этом сайте установить фильтр намерений для конкретного URI. Например, вот что делает Market для перехвата URI на своем сайте:

        <intent-filter>
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />
          <data android:scheme="http" android:host="market.android.com"
                android:path="/search" />
        </intent-filter>

В качестве альтернативы существует схема "намерение:". Это позволяет вам описать практически любое намерение как URI, который браузер попытается запустить при нажатии. Чтобы создать такую схему, лучше всего просто написать код для создания интента, который вы хотите запустить, а затем вывести результат intent.toUri(Intent.URI_INTENT_SCHEME).

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

Лучший способ использовать это, если вы хотите убедиться, что оно запускает только ваше приложение, это использовать собственное скопированное действие и использовать Intent.setPackage(), чтобы сказать, что намерение будет соответствовать только пакету вашего приложения.

Компромиссы между двумя вариантами:

  • http URI требуют, чтобы у вас был собственный домен. Пользователь всегда будет иметь возможность показать URI в браузере. Он имеет очень хорошие свойства отката, когда если ваше приложение не установлено, пользователь просто перейдет на ваш веб-сайт. URI намерения

  • требуют, чтобы ваше приложение уже было установлено, и только на телефонах Android. Они допускают практически любые намерения (но всегда включают категорию BROWSABLE и не поддерживают явные компоненты). Они позволяют направить запуск только на ваше приложение, не оставляя пользователю возможности перейти в браузер или любое другое приложение.

274
ответ дан 23 November 2019 в 04:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: