Lancement d'une application Android personnalisée à partir D'un navigateur Android / Chrome

tout d'Abord, ma question est très similaire à ce , ce et ce . La documentation Android pour ce que j'essaie de réaliser est ici . Je n'ai pas pu faire fonctionner ce système en utilisant ces ressources, alors s'il vous plaît ne marquez pas cela comme une duplication car ce n'est pas le cas.

j'ai un site web et une application Android. L'Utilisateur sera en mesure de scanner les codes QR qui contiennent des liens comme http://mywebsite.com/map / . Lorsque l'utilisateur essaie d'ouvrir ce lien, Je veux que Android lui montre une boîte de dialogue chooser où il peut choisir d'ouvrir ce lien En utilisant mon application. Si mon application n'est pas installée, elle doit passer au site Web spécifié.

Je sais que Chrome permet cela en ouvrant la boîte de dialogue chooser lorsque l'utilisateur navigue vers cette adresse. Par exemple, essayez de télécharger le Stack Exchange app et aller à ce question dans google Chrome. Il montrera ceci:

Screenshot of chooser dialog.

j'ai ajouté le code suivant dans AndroidManifest.xml après avoir suivi la suggestion dans les réponses susmentionnées:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <action android:name="android.intent.action.SEND" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data
        android:host="mywebsite.com"
        android:path="/map"
        android:scheme="http" />
    <data
        android:host="mywebsite.com"
        android:path="/animals"
        android:scheme="http" />
    <data
        android:host="mywebsite.com"
        android:path="/articles"
        android:scheme="http" />
</intent-filter>

aussi, j'ai essayé d'ajouter android:mimeType=" text/plain " aux données, mais cela n'a pas aidé.

le problème est que quand je vais à http://mywebsite.com/map ou http://mywebsite.com/map / Chrome ouvre simplement la page Web sans afficher le dialogue chooser.

je voudrais mentionner:

  • suite à la documentation Android, j'ai ajouté ce code dans l'une des structures d'activité dans AndroidManifest.XML. Comme je ne suis pas sûr que ce soit l'endroit idéal pour l'ajouter, j'ai également essayé de l'ajouter en dehors de la structure de l'application et directement à l'intérieur de la structure de la demande, mais il n'a pas de travail
  • c'est le seul code que j'ai implémenté pour que cela fonctionne. Si vous avez besoin d'autre chose, faites-le-moi savoir. D'après ce que j'ai compris, Ajouter un href à la page Web n'est nécessaire que lorsque l'on utilise des schémas personnalisés
  • je ne veux pas utiliser un schéma personnalisé afin d'atteindre cette
  • je me développe sur un Nexus 4, en cours D'exécution Android 4.4.2 (dernier)
28
demandé sur Community 2014-02-09 22:20:41

3 réponses

Vous devez le configurer comme ceci :

<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>

notez que dans votre cas, vous devrez utiliser android:pathPrefix au lieu de android:path.

60
répondu AndroidGecko 2014-02-12 11:50:11

pour être sûr, vous devez réinitialiser les préférences de votre application au cas où vous l'auriez accidentellement paramétrée pour toujours ouvrir le lien dans chrome plutôt que d'afficher la boîte de dialogue chooser. Une fois que" toujours " est utilisé pour ouvrir l'uri correspondant, il ne montrera jamais le chooser.

Deuxièmement, vous pouvez avoir autant d'éléments de données dans le filtre d'intention que vous le souhaitez, mais il n'est pas nécessaire de répéter l'information. Vous pouvez faire la même chose:

<data android:host="mywebsite.com"/>
<data android:scheme="http"/>
<data android:path="/map"/>
<data android:path="/animals"/>
<data android:path="/articles"/>

Mais notez que pour le chemin, vous pouvez simplement utiliser un joker

<data android:path="/.*"/>

envisager d'ajouter un

<data android:host="www.mywebsite.com"/>

et enfin, vous pouvez ne pas vouloir afficher la boîte de dialogue chooser mais ouvrir une application spécifique intention/activité directement. Sur votre site web, si vous détectez l'agent utilisateur android, vous pouvez créer un lien url de cette façon:

<a href="intent://mywebsite.com/articles#Intent;package=com.myapp;scheme=http;end;"/>

voir ici pour plus de détails Comment puis-je ouvrir n'importe quelle application de mon navigateur web (Chrome) dans Android? Qu'est-ce que j'ai à voir avec le lien A Href?

notez qu'avec cette méthode, si L'application n'est pas installée, L'Utilisateur sera amené sur Google Play store pour le paquet app spécifié.

si vous avez encore des problèmes, vérifiez votre priorité de filtre d'intention. http://developer.android.com/guide/topics/manifest/intent-filter-element.html

6
répondu Eric Woodruff 2017-05-23 12:34:53

dans mon cas L'URL du site est: http://www.example.org/mobile/

donc mettre ce code dans AndroidManifest.xml à l'intérieur activité

            <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="www.example.org"
                    android:pathPrefix="/mobile/"
                    android:scheme="http" />
            </intent-filter>

ici,

schéma - > Protocole du site particulier

hôte -> Exact url du site avec WWW

pathprefix - > le sous-Chemin de votre site si disponible

Maintenant,

vous pouvez rechercher avec chrome / etc android browser'search box comme exemple puis ouvrir dialogue choisi ..!!

3
répondu Dhruv Raval 2015-09-07 07:23:10