Est-il possible de faire un lien tel que:
<a href="anton://useful_info_for_anton_app">click me!</a>
faire démarrer mon application Anton?
Je sais que cela fonctionne pour l'application Android Market avec le protocole de marché, mais peut-on faire quelque chose de similaire avec d'autres applications?
Voici un exemple de lien qui lancera l'Android Market:
<a href="market://search?q=pname:com.nytimes.android">click me!</a>
Mise à jour:
La réponse que j'ai acceptée fournie par eldarerathis fonctionne très bien, mais je veux juste mentionner que j'ai eu quelques problèmes avec l'ordre des sous-éléments de la <intent-filter>
balise. Je vous suggère simplement d'en créer un autre <intent-filter>
avec les nouveaux sous-éléments de cette balise pour éviter les problèmes que j'ai rencontrés. Par exemple, mon AndroidManifest.xml
apparence ressemble à ceci:
<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>
Réponses:
Je pense que vous voudrez regarder l'
<intent-filter>
élément de votre fichier Mainfest. Plus précisément, consultez la documentation du<data>
sous-élément.Fondamentalement, ce que vous devrez faire est de définir votre propre schéma. Quelque chose dans le sens de:
Ensuite, vous devriez pouvoir lancer votre application avec des liens qui commencent par le
anton:
schéma d'URI.la source
Veuillez NE PAS utiliser votre propre schéma personnalisé comme ça !!! Les schémas URI sont un espace de noms global de réseau . Possédez-vous le programme "anton:" dans le monde entier? Non? Alors ne l'utilisez pas.
Une option consiste à avoir un site Web et à avoir un filtre d'intention pour un URI particulier sur ce site Web. Par exemple, voici ce que fait Market pour intercepter les URI sur son site Web:
Alternativement, il existe le schéma "intention:". Cela vous permet de décrire presque n'importe quelle intention comme un URI, que le navigateur tentera de lancer en cliquant dessus. Pour créer un tel schéma, la meilleure façon consiste à simplement écrire le code pour construire l'intention que vous souhaitez lancer, puis à imprimer le résultat d'intention.toUri (Intent.URI_INTENT_SCHEME).
Vous pouvez utiliser une action avec cette intention pour rechercher toute activité prenant en charge cette action. Le navigateur ajoutera automatiquement la catégorie BROWSABLE à l'intention avant de la lancer, pour des raisons de sécurité; il supprimera également tout composant explicite que vous avez fourni pour la même raison.
La meilleure façon d'utiliser cela, si vous voulez vous assurer qu'elle ne lance que votre application, est avec votre propre action de portée et en utilisant Intent.setPackage () pour dire que l'intention ne correspondra qu'à votre package d'application.
Compromis entre les deux:
Les URI http nécessitent que vous possédiez un domaine que vous possédez. L'utilisateur aura toujours la possibilité d'afficher l'URI dans le navigateur. Il a de très belles propriétés de secours où, si votre application n'est pas installée, elles atterriront simplement sur votre site Web.
Les URI intentionnels nécessitent que votre application soit déjà installée et uniquement sur les téléphones Android. Ils autorisent presque toutes les intentions (mais incluent toujours la catégorie BROWSABLE et ne prennent pas en charge les composants explicites). Ils vous permettent de diriger le lancement uniquement vers votre application sans que l'utilisateur n'ait la possibilité d'aller à la place vers le navigateur ou toute autre application.
la source
market://
liens :)Je m'excuse de me promouvoir, mais j'ai un plugin jQuery pour lancer des applications natives à partir de liens Web https://github.com/eusonlito/jquery.applink
Vous pouvez l'utiliser facilement:
la source
J'ai également fait face à ce problème et j'ai vu de nombreuses pages absurdes. J'ai appris que pour rendre votre application consultable, changez l'ordre des éléments XML, ceci:
Cela a fonctionné pour moi et pourrait vous aider.
la source
Voici ma recette:
Créez un HTML statique qui redirige vers l'URL de votre application demandée, mettez cette page sur le Web.
De cette façon, les liens que vous partagez sont de «vrais» liens en ce qui concerne Android (ils seront «cliquables»).
Vous «partagez» un lien HTTP normal, www.your.server.com/foo/bar.html Cette URL renvoie un simple code HTML de 8 lignes qui redirige vers l'URI de votre application (window.location = "blah: // kuku") ( notez que 'blah' ne doit plus être HTTP ou HTTPS).
Une fois que vous l'avez mis en place, vous pouvez étendre le code HTML avec toutes les fonctionnalités sophistiquées comme suggéré ci-dessus.
Cela fonctionne avec le navigateur intégré, Opera et Firefox (je n'ai testé aucun autre navigateur). Firefox demande «Ce lien doit être ouvert avec une application» (ok, annuler). Les autres navigateurs ne se soucient apparemment pas beaucoup de la sécurité, ils ouvrent simplement l'application, sans poser de questions.
la source
<a href="iamnearby://register_activate">Activate</a>
Une fois que vous avez l'intention et le schéma d'URL personnalisé pour la configuration de votre application, ce code javascript en haut d'une page de réception a fonctionné pour moi sur iOS et Android:
Cela n'a été testé que sur le navigateur Android. Je ne suis pas sûr de Firefox ou d'Opera. La clé est que même si le navigateur Android ne lèvera pas une belle exception pour vous
window.open(custom_url, '_blank')
, il échouera et reviendranull
que vous pourrez tester plus tard.Mise à jour: utilisation
store_loc = "https://play.google.com/store/apps/details?id=com.raditaz";
pour créer un lien vers Google Play sur Android.la source
Vous voudrez peut-être envisager une bibliothèque pour gérer le lien profond vers votre application:
https://github.com/airbnb/DeepLinkDispatch
Vous pouvez ajouter le filtre d'intention sur une activité annotée comme les personnes suggérées ci-dessus. Il gérera le routage et l'analyse des paramètres de tous vos liens profonds. Par exemple, votre MainActivity peut avoir quelque chose comme ceci:
Il peut également gérer les paramètres de requête.
la source
Essayez mon truc simple:
et mon lien html:
ou vous pouvez faire <a href = "classRegister: true "> <- valeur "true" pour nom de fichier de classe
cependant ce script fonctionne pour le lien mailto :)
la source
JavascriptInterface
avec la solution de contournement, c'est la bonne solution de contournement si vous devez prendre en charge la version 2.3 où JavascriptInterface est buggé.Cette méthode n'appelle pas la boîte de dialogue de désambiguïsation vous demandant d'ouvrir votre application ou un navigateur.
Si vous enregistrez les éléments suivants dans votre manifeste
et cliquez sur cette URL depuis un e-mail sur votre téléphone par exemple
Android tentera alors de trouver une application avec le package com.myApp qui répond à votre intention de galerie et qui possède un schéma myApp . Dans le cas contraire, il vous amènera au magasin, à la recherche de com.myApp , qui devrait être votre application.
la source