Используйте <intent-filter>
с элементом <data>
. Например, чтобы обрабатывать все ссылки на twitter.com, вы должны поместить это в ваш <activity>
в ваш AndroidManifest.xml
:
<intent-filter>
<data android:scheme="http" android:host="twitter.com"/>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
Затем, когда пользователь нажимает на ссылку на твиттер в браузере, ему будет предложено указать, какое приложение использовать для выполнения действия: браузер или ваше приложение.
Конечно, если вы хотите обеспечить тесную интеграцию между вашим сайтом и вашим приложением, вы можете определить свою собственную схему:
<intent-filter>
<data android:scheme="my.special.scheme" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
Затем в вашем веб-приложении вы можете разместить ссылки вроде:
<a href="my.special.scheme://other/parameters/here">
И когда пользователь щелкает по нему, ваше приложение будет запускаться автоматически (поскольку оно, вероятно, будет единственным, способным обрабатывать my.special.scheme://
тип Uris). Единственным недостатком этого является то, что если у пользователя нет установленного приложения, он получит неприятную ошибку. И я не уверен, что есть способ проверить.
Редактировать: Чтобы ответить на ваш вопрос, вы можете использовать getIntent().getData()
, который возвращает объект Uri
. Затем вы можете использовать Uri.*
методы для извлечения необходимых данных. Например, скажем, пользователь щелкнул ссылку на http://twitter.com/status/1234
:
Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "twitter.com"
List<String> params = data.getPathSegments();
String first = params.get(0); // "status"
String second = params.get(1); // "1234"
Вы можете сделать вышеупомянутое в любом месте вашего Activity
, но вы, вероятно, захотите сделать это в onCreate()
. Вы также можете использовать params.size()
, чтобы получить количество сегментов пути в Uri
. Обратитесь к javadoc или веб-сайту разработчика Android для других Uri
методов, которые вы можете использовать для извлечения определенных частей.