Quelqu'un peut-il me guider sur la façon de lancer mon application Android à partir du navigateur Android?
la source
Quelqu'un peut-il me guider sur la façon de lancer mon application Android à partir du navigateur Android?
Utilisez un <intent-filter>
avec un <data>
élément. Par exemple, pour gérer tous les liens vers twitter.com, vous devez mettre cela <activity>
dans votre AndroidManifest.xml
:
<intent-filter>
<data android:scheme="http" android:host="twitter.com"/>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
Ensuite, lorsque l'utilisateur clique sur un lien vers twitter dans le navigateur, il lui sera demandé quelle application utiliser pour mener à bien l'action: le navigateur ou votre application.
Bien sûr, si vous souhaitez assurer une intégration étroite entre votre site Web et votre application, vous pouvez définir votre propre schéma:
<intent-filter>
<data android:scheme="my.special.scheme" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
Ensuite, dans votre application Web, vous pouvez mettre des liens comme:
<a href="my.special.scheme://other/parameters/here">
Et lorsque l'utilisateur clique dessus, votre application sera lancée automatiquement (car elle sera probablement la seule à pouvoir gérer le my.special.scheme://
type d'uris). Le seul inconvénient est que si l'utilisateur n'a pas installé l'application, il obtiendra une erreur désagréable. Et je ne suis pas sûr qu'il existe un moyen de vérifier.
Modifier: Pour répondre à votre question, vous pouvez utiliser getIntent().getData()
ce qui renvoie un Uri
objet. Vous pouvez ensuite utiliser des Uri.*
méthodes pour extraire les données dont vous avez besoin. Par exemple, supposons que l'utilisateur ait cliqué sur un lien pour 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"
Vous pouvez faire ce qui précède n'importe où dans votre Activity
, mais vous voudrez probablement le faire onCreate()
. Vous pouvez également utiliser params.size()
pour obtenir le nombre de segments de chemin dans le Uri
. Consultez javadoc ou le site Web des développeurs Android pour d'autres Uri
méthodes que vous pouvez utiliser pour extraire des parties spécifiques.
android:exported="true"
à leurActivity
manifeste. Cochez cette réponse stackoverflow.com/a/13044911/1276636Toutes les réponses ci-dessus ne fonctionnaient pas pour moi au
CHROME
28 janvier 2014mon application a été lancée correctement à partir de http://example.com/someresource/ des liens depuis des applications telles que Hangouts, Gmail, etc., mais pas depuis le navigateur Chrome.
pour résoudre ce problème, afin qu'il démarre correctement à partir de CHROME, vous devez définir un filtre d'intention comme celui-ci
noter l'
pathPrefix
élémentvotre application apparaîtra désormais dans le sélecteur d'activité chaque fois que l'utilisateur demande un http://example.com/someresource/ modèle à partir du navigateur Chrome en cliquant sur un lien à partir des résultats de recherche Google ou de tout autre site Web
la source
S'il vous plaît voir mon commentaire ici: Faire un lien dans le navigateur Android démarrer mon application?
Nous décourageons fortement les gens d'utiliser leurs propres schémas, à moins qu'ils ne définissent un nouveau schéma Internet mondial.
la source
Dans mon cas, j'ai dû définir deux catégories pour le
<intent-filter>
puis cela a fonctionné:la source
Par exemple, vous avez des choses suivantes:
Ensuite, vous devez faire ensuite:
1) Ajoutez un filtre d'intention à votre activité (il peut s'agir de n'importe quelle activité. Pour plus d'informations, consultez la documentation ).
2) Créez un fichier HTML pour tester le lien ou utilisez ces méthodes.
3) Utilisez Mobile Chrome pour tester
4) C'est tout.
Et il n'est pas nécessaire de publier une application sur le marché pour tester le lien profond =)
De plus, pour plus d'informations, consultez la documentation et la présentation utile .
la source
Il devrait également être
<category android:name="android.intent.category.BROWSABLE"/>
ajouté au filtre d'intention pour que l'activité soit correctement reconnue à partir du lien.la source
Le lien suivant donne des informations sur le lancement de l'application (si installée) directement depuis le navigateur. Sinon, il ouvre directement l'application dans le Play Store afin que l'utilisateur puisse télécharger en toute transparence.
https://developer.chrome.com/multidevice/android/intents
la source
Veuillez noter que si votre icône disparaît du lanceur Android lorsque vous implémentez cette fonctionnalité, vous devez diviser le filtre d'intention.
la source
Oui, Chrome recherche au lieu de rechercher un schéma. Si vous souhaitez lancer votre application via le schéma d'URI, utilisez cette application utilitaire cool sur le Play Store. Cela m'a sauvé la journée :) https://play.google.com/store/apps/details?id=com.naosim.urlschemesender
la source
Port Xamarin de Felix 's answer
Dans votre
MainActivity
, ajoutez ceci ( docs: Android.App.IntentFilterAttribute Class ):Xamarin ajoutera les éléments suivants
AndroidManifest.xml
pour vous:Et pour obtenir des paramètres ( j'ai testé dans OnCreate of MainActivity ):
Pour autant que je sache, ce qui précède peut être ajouté dans n'importe quelle activité, non seulement MainActivity
Remarques:
OnCreate
événement de l'applicationMainLauncher Activity
sera à nouveau déclenché.<a href="my.special.scheme://host/arg1/arg2">
en - dessus dernière valeurs extrait de code , sont les suivants:Mise à jour: si Android crée une nouvelle instance de votre application, vous devez
android:launchMode="singleTask"
également l' ajouter .la source
L'approche de Felix pour gérer les liens profonds est l'approche typique de la gestion des liens profonds. Je suggère également de consulter cette bibliothèque pour gérer le routage et l'analyse de vos liens profonds:
https://github.com/airbnb/DeepLinkDispatch
Vous pouvez utiliser des annotations pour enregistrer votre activité pour un URI de lien profond particulier, et il extraira les paramètres pour vous sans avoir à faire le rigmarole habituel pour obtenir les segments de chemin, les faire correspondre, etc. Vous pouvez simplement annoter et effectuer une activité comme celle-ci :
la source
Hé, j'ai la solution. Je n'ai pas défini la catégorie comme "Par défaut". J'utilisais également l'activité principale pour les données d'intention. Maintenant, j'utilise une activité différente pour les données d'intention. Merci pour l'aide. :)
la source
Vous devez ajouter un pseudo-nom d'hôte à l'application CALLBACK_URL 'app: //' n'a pas de sens en tant qu'URL et ne peut pas être analysé.
la source
example.php:
la source
Regardez la réponse de @JRuns ici . L'idée est de créer du HTML avec votre schéma personnalisé et de le télécharger quelque part. Ensuite, si vous cliquez sur votre lien personnalisé dans votre fichier html, vous serez redirigé vers votre application. J'ai utilisé cet article pour Android. Mais n'oubliez pas de définir l'
Name = "MyApp.Mobile.Droid.MainActivity"
attribut de nom complet pour votre activité cible.la source
Au 15/06/2019
ce que j'ai fait est d'inclure les quatre possibilités pour ouvrir l'url.
c'est-à-dire avec
http
/https
et 2 avecwww
en préfixe et 2 sanswww
et en utilisant cela, mon application se lance automatiquement maintenant sans me demander de choisir un navigateur et une autre option.
la source