Может ли кто-нибудь мне посоветовать, как запустить приложение для 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">
И когда пользователь нажмет на него, ваше приложение будет запущено автоматически (потому что оно, вероятно, будет единственным, которое может обрабатывать тип uris my.special.scheme://
). Единственным недостатком этого является то, что если у пользователя нет установленного приложения, они получат неприятную ошибку. И я не уверен, что есть возможность проверить.
Edit: Чтобы ответить на ваш вопрос, вы можете использовать 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
, которые вы можете использовать для извлечения определенных частей.
Эй, у меня есть решение. Я не задал категорию как «По умолчанию». Также я использовал основное действие для данных о намерениях. Теперь я использую другое действие для данных намерения. Спасибо за помощь. :)
Звучит маловероятно (хотя я признаю, что это старый вопрос и, возможно, все изменилось.) С http://developer.android.com/guid e/components/intents-filters.html # ifs "Для намерения пройти тест категории, каждая категория в объекте Intent * * должна соответствовать категории в * filter *. Фильтр может перечислить дополнительные категории, но он не может опустить любые, которые находятся в намерении ». –
Вам нужно добавить псевдо-хост-имя в CALLBACK_URL 'приложение: //', не имеет смысла в качестве URL-адреса и не может быть проанализировано.
В фильтр намерений должно быть добавлено <category android:name="android.intent.category.BROWSABLE"/>
, чтобы активность была правильно распознана по ссылке.
Для справки добавление CATEGORY_BROWSABLE означает, что« целевая активность может быть безопасно вызвана браузером для отображения данных, на которые ссылается ссылка, например, изображение или сообщение электронной почты ». – greg7gkb
Является ли это существующей категорией или вы предлагаете новую? – Anish
Он существует. Очевидно, у вас должен быть отдельный хост веб-сайта в разных тегах фильтра намерений или он вызывает проблемы. – NoBugs
Пожалуйста, смотрите мой комментарий здесь: Make a link in the Android browser start up my app?
Мы решительно препятствовать людям использовать свои собственные схемы, если они не являются определяющими новой мировой схемой интернета.
Hackbod является одним из инженеров Google, стоящих за платформой Android. Вероятно, это хорошая идея. этот совет. На самом деле, похоже, что поддержка пользовательских схем вроде этого сломалась в Honeycomb. – nmr
Я считаю, что вам нужно создать свою собственную схему, если вы хотите, чтобы URL-адрес также работал на iPhone (например, с QR-кода). –
Я не могу нести ответственность за ограничения, наложенные на разработчиков iOS. ;) – hackbod
В моем случае я должен был установить две категории для <intent-filter>
, а затем он работал:
<intent-filter>
<data android:scheme="my.special.scheme" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
Здесь же необходимо добавить дополнительную категорию. – KPK
Может кто-нибудь объяснить, каков фактический процесс достижения этого? Любая ссылка на точную реализацию, предпосылки будут полезны. Спасибо –
Протестировано на установке dev. На самом деле я давал неправильное доменное имя. Виноват. –
Следующая ссылка дает информацию о запуске приложения (если он установлен) непосредственно из браузера.В противном случае он напрямую открывает приложение в магазине воспроизведения, чтобы пользователь мог легко загрузить его.
Все вышеперечисленные ответы не работает для меня с CHROME
от 28 января 2014
мой App правильно запущен из http://example.com/someresource/ ссылок из приложений, таких как Hangouts, Gmail и т.д., но не внутри хромированной браузера.
, чтобы решить эту проблему, так что он начинает правильно от ХРОМ вы должны установить фильтр намерений, как этот
<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:host="example.com"
android:pathPrefix="/someresource/"
android:scheme="http" />
<data
android:host="www.example.com"
android:pathPrefix="/someresource/"
android:scheme="http" />
</intent-filter>
Обратите внимание на pathPrefix
элемент
ваше приложение теперь будет появляться внутри сборщика активности всякий раз, когда пользователь запрашивает http://example.com/someresource/ шаблон из браузера Chrome, щелкнув ссылку из результатов поиска Google или любого другого сайта
Это очень помогло мне. Большое спасибо! Пожалуйста, напишите свой ответ здесь, чтобы я мог наградить вас щедростью! http://stackoverflow.com/questions/21663001/launching-custom-android-application-from-android-browser-chrome –
@ VladSchnakovszki thx, там u go :) – AndroidGecko
На каком языке это? – Dims
Да, поиск в Chrome вместо поиска схемы. Если вы хотите запустить приложение через схему URI, используйте это приложение для приложений в магазине Play. Это спасло мой день :) https://play.google.com/store/apps/details?id=com.naosim.urlschemesender
Обратите внимание, что если ваш значок исчезает с панели запуска Android при реализации этой функции, вам нужно разделить фильтр намерения.
<activity
android:name=".MainActivity"
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>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="your-own-uri" />
</intent-filter>
</activity>
Как сделать эту работу для android lollipop? – Salmaan
Ты только что спас мне жизнь, сэр @szines. Спасибо. – user1801879
Это, похоже, не работает на lollipop – portfoliobuilder
example.php: подход
<?php
if(!isset($_GET['app_link'])){ ?>
<iframe src="example.php?app_link=YourApp://blabla" style="display:none;" scrolling="no" frameborder="0"></iframe>
<iframe src="example.php?full_link=http://play.google.com/xyz" style="display:none;" scrolling="no" frameborder="0"></iframe>
<?php
}
else { ?>
<script type="text/javascript">
self.window.location = '<?php echo $_GET['app_link'];?>';
window.parent.location.href = '<?php echo $_GET['full_link'];?>';
</script>
<?php
}
Можете ли вы объяснить, что должен делать этот код? –
Это создает два невидимых фрейма: глубокую ссылку и нормальную ссылку. Если приложение установлено, он запустит глубокую ссылку iframe. Если нет, отображается нормальная ссылка. С дополнительной работой можно было отложить отложенную глубокую привязку, где после установки приложения вызывается глубокая ссылка. –
Феликса к обработке глубоких связей является типичным подходом к обработке глубоких связей. Я хотел бы также предлагаю проверить эту библиотеку для обработки маршрутизации и синтаксического анализа ваших глубоких ссылок:
https://github.com/airbnb/DeepLinkDispatch
Вы можете использовать аннотации зарегистрировать свою активность для конкретной глубокой ссылки URI, и он будет извлекать из параметров для вас без необходимости делать обычную канитель получения сегментов пути, сопоставления его, и т.д. Вы можете просто аннотировать и деятельность, как это:
@DeepLink("somePath/{someParameter1}/{someParameter2}")
public class MainActivity extends Activity {
...
}
Это лучший способ сделать это. – muntasir2000
к примеру, Вы имеете следующие вещи:
Ссылка, чтобы открыть приложение: http://example.com
Название пакета вашего приложения: com.example.mypackage
Тогда вам необходимо выполнить следующие действия:
1) Добавить фильтр намерений к вашей деятельности (Может быть любая деятельность, которую вы хотите. Для получения дополнительной информации проверьте documentation).
<activity
android:name=".MainActivity">
<intent-filter android:label="@string/filter_title_view_app_from_web">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "http://example.com" -->
<data
android:host="example.com"
android:scheme="http" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
2) Создайте HTML-файл, чтобы проверить ссылку или использовать this methods.
<a href="intent://example.com#Intent;scheme=http;package=com.example.mypackage;end">Open your Activity directly (just open your Activity, without a choosing dialog). </a>
<a href="http://example.com">Open this link with browser or your programm (by choosing dialog).</a>
3) Использование мобильных Chrome для тестирования
4) Вот так.
И его не нужно опубликовать приложение на рынке, чтобы проверить глубокие ссылки =)
Кроме того, для получения дополнительной информации, проверьте documentation и полезный presentation.
Мне нужно было создать html-файл и загрузить его, чтобы он работал. Интересно, почему, особенно второй, не работает непосредственно из браузера (хром). – Makalele
- 1. Запуск пользовательских приложений из браузера
- 2. Запуск приложения Android от браузера
- 3. Запуск Android Intent от браузера
- 4. Запуск приложений Android Developement
- 5. Android: Запуск приложений
- 6. Android - Запуск приложений программно
- 7. Запуск приложений Android с Android-приложения
- 8. Запуск приложения для Android из WEB-браузера
- 9. Запуск веб-браузера в Android
- 10. android - как остановить запуск приложений
- 11. Android Сбои приложений на запуск
- 12. Запуск приложения Android от эмулятора
- 13. Как открыть приложение для Android от браузера
- 14. Android - запуск активности поверх других приложений
- 15. Android пользовательских SeekBar от вытяжке
- 16. Запуск Android намерения из браузера с статистов
- 17. Инструкции для пользовательских интерфейсов для Android-приложений (значки вкладок)
- 18. Запуск приложения Android из браузера URI
- 19. Запуск службы из браузера в android
- 20. Запуск приложений от freeRTOS
- 21. СМС-уведомление от Android-приложений
- 22. Intellij «Запуск от приложения для Android» отсутствует
- 23. Запуск моего приложения для Android от Whatsapp
- 24. Запуск службы init.rc для Android от Activity
- 25. Запуск приложений Android на платформе Linux
- 26. защита от удаления приложений для Android
- 27. Запуск Android приложений в Самсунга устройства
- 28. Разработка приложений для Android
- 29. Защита от видеофайлов приложений Android
- 30. css рамки для приложений для Android android для настольных приложений
Спасибо за тонну за ваш быстрый ответ. Но можете ли вы рассказать мне, как получить доступ к параметрам после «my.special.scheme: //». –
Я отредактировал свой ответ, чтобы включить инструкции о том, как извлечь данные из Uri. Пожалуйста, отметьте этот ответ как принятый (только), если вы считаете это, нажав галочку рядом с ним. – Felix
Очень удивительный очень полезный. – Anton