433 votes

Lancer une application android personnalisée du navigateur android

Quelqu'un peut me guider s’il vous plaît au sujet de comment lancer mon application android depuis le navigateur android ?

639voto

Felix Points 33944

Utiliser un <intent-filter> avec un <data> élément. Par exemple, pour gérer tous les liens de twitter.com, vous placez à l'intérieur de votre <activity> 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, ils sera demandé à ce que l'application à utiliser pour compléter l'action: le navigateur ou de votre application.

Bien sûr, si vous voulez fournir 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>

Puis, dans votre web app, 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 il sera probablement le seul qui peut manipuler my.special.scheme:// type d'uri). Le seul inconvénient est que si l'utilisateur ne dispose pas de l'application installée, ils ont une fâcheuse erreur. Et je ne suis pas sûr qu'il y a aucun moyen de vérifier.


Edit: pour répondre À votre question, vous pouvez utiliser getIntent().getData() qui retourne un Uri objet. Vous pouvez ensuite utiliser Uri.* méthodes pour extraire les données dont vous avez besoin. Par exemple, imaginons que l'utilisateur a 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 le faire ci-dessus n'importe où dans votre Activity, mais vous allez probablement vouloir le faire dans onCreate(). Vous pouvez également utiliser params.size() pour obtenir le nombre de segments de tracé dans l' Uri. Regarder javadoc ou l'android développeur de site web pour les autres Uri méthodes que vous pouvez utiliser pour extraire des parties spécifiques.

73voto

AndroidGecko Points 2216

Toutes les réponses ci-dessus ne fonctionne pas pour moi avec CHROME le 28 Jan 2014

mon Application a lancé correctement à partir de http://example.com/someresource/ liens à partir d'applications comme hangouts, gmail, etc, mais pas de l'intérieur du navigateur chrome.

pour résoudre ce problème, de sorte qu'il se lance correctement à partir de CHROME, vous devez définir l'intention de filtre 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>

remarque l' pathPrefix élément

votre application va maintenant apparaître à l'intérieur de l'activité sélecteur à chaque fois que les demandes de l'utilisateur http://example.com/someresource/ motif de navigateur google chrome en cliquant sur un lien à partir de résultats de recherche google ou tout autre site web

67voto

hackbod Points 55292

S’il vous plaît voir mon commentaire ici : faire un lien dans le navigateur Android lancer mon application ?

Nous vous déconseillons de gens d’utiliser leurs propres programmes, sauf si elles définissent un plan nouveau monde internet.

47voto

Zaki Points 311

Dans mon cas j’ai dû mettre deux catégories pour les `` et puis cela a fonctionné :

18voto

georgij Points 330

Il devrait également y avoir `` ajouté au filtre intention de faire de l’activité reconnue correctement le lien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X