Кто-нибудь может подсказать, пожалуйста, как запустить мое приложение для Android из браузера Android?
источник
Кто-нибудь может подсказать, пожалуйста, как запустить мое приложение для Android из браузера Android?
Используйте <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
методов, которые вы можете использовать для извлечения определенных частей.
android:exported="true"
ееActivity
в манифест. Проверьте этот ответ stackoverflow.com/a/13044911/1276636Все вышеперечисленные ответы не работают для меня с
CHROME
28 января 2014 г.мое приложение правильно запущено с http://example.com/someresource/ из таких приложений, как видеовстречи, gmail и т. д., но не из браузера Chrome.
чтобы решить эту проблему, чтобы он правильно запускался из CHROME, вы должны установить намеренный фильтр следующим образом
Обратите внимание
pathPrefix
элементВаше приложение теперь будет отображаться в средстве выбора активности всякий раз, когда пользователь запрашивает http://example.com/someresource/ шаблон из браузера Chrome, щелкая ссылку в результатах поиска Google или на любом другом веб-сайте.
источник
Пожалуйста, смотрите мой комментарий здесь: Сделать ссылку в браузере Android, чтобы запустить мое приложение?
Мы настоятельно не рекомендуем людям использовать свои собственные схемы, если они не определяют новую всемирную интернет-схему.
источник
В моем случае я должен был установить две категории для,
<intent-filter>
и тогда это сработало:источник
Например, у вас есть следующие вещи:
Тогда вам нужно сделать следующее:
1) Добавьте фильтр намерений к вашей активности (может быть любым действием, которое вы хотите. Для получения дополнительной информации проверьте документацию ).
2) Создайте HTML-файл для проверки ссылки или используйте этот метод.
3) Используйте Mobile Chrome для тестирования
4) Вот и все.
И нет необходимости публиковать приложение в маркете, чтобы проверить глубокие ссылки =)
Также, для получения дополнительной информации, проверьте документацию и полезную презентацию .
источник
Также следует
<category android:name="android.intent.category.BROWSABLE"/>
добавить фильтр намерений, чтобы действие было правильно распознано по ссылке.источник
Следующая ссылка содержит информацию о запуске приложения (если оно установлено) непосредственно из браузера. В противном случае он напрямую открывает приложение в игровом магазине, так что пользователь может легко загрузить.
https://developer.chrome.com/multidevice/android/intents
источник
Обратите внимание, если ваш значок исчезнет из панели запуска Android, когда вы реализуете эту функцию, чем вы должны разделить намеренный фильтр.
источник
Да, Chrome ищет, а не ищет схему. Если вы хотите запустить свое приложение по схеме URI, воспользуйтесь этой классной утилитой App в магазине Play. Это спасло мой день :) https://play.google.com/store/apps/details?id=com.naosim.urlschemesender
источник
Хамарин порт Феликс ответ
В вашем
MainActivity
, добавьте это ( docs: Android.App.IntentFilterAttribute Class ):Xamarin добавит следующее
AndroidManifest.xml
для вас:И для того, чтобы получить параметры ( я тестировал в OnCreate of MainActivity ):
Насколько я знаю, выше можно добавить в любой вид деятельности, а не только MainActivity
Ноты:
OnCreate
событие приложенияMainLauncher Activity
будет запущено снова.<a href="my.special.scheme://host/arg1/arg2">
в приведенном выше последнем коде значения фрагмента будут:Обновление: если Android создает новый экземпляр вашего приложения, вы должны добавить
android:launchMode="singleTask"
тоже.источник
Подход Феликса к работе с глубокими ссылками является типичным подходом к работе с глубокими ссылками. Я бы также предложил проверить эту библиотеку для обработки маршрутизации и анализа ваших глубоких ссылок:
https://github.com/airbnb/DeepLinkDispatch
Вы можете использовать аннотации, чтобы зарегистрировать свою активность для определенного URI глубокой ссылки, и она будет извлекать параметры для вас, не выполняя обычную процедуру получения сегментов пути, сопоставления и т. Д. Вы можете просто аннотировать и выполнять действия, подобные этой :
источник
Привет, я получил решение. Я не установил категорию как «По умолчанию». Также я использовал основной вид деятельности для данных. Теперь я использую другую активность для данных о намерениях. Спасибо за помощь. :)
источник
Вам нужно добавить псевдо-имя хоста в CALLBACK_URL 'app: //', которое не имеет смысла как URL и не может быть проанализировано.
источник
example.php:
источник
Посмотрите ответ @JRuns здесь . Идея состоит в том, чтобы создать HTML с вашей собственной схемой и загрузить его куда-нибудь. Затем, если вы нажмете на свою пользовательскую ссылку в html-файле, вы будете перенаправлены в ваше приложение. Я использовал эту статью для Android. Но не забудьте установить
Name = "MyApp.Mobile.Droid.MainActivity"
атрибут полного имени для вашей целевой деятельности.источник
По состоянию на 15.06.2009
я включил все четыре возможности открыть URL.
т.е. с
http
/https
и 2 сwww
префиксом и 2 безwww
и с помощью этого мое приложение запускается автоматически сейчас без запроса выбора браузера и других опций.
источник