173 votes

Comment mettre en place mon propre modèle URI sur Android

Dire que je veux définir une URI tels que:

myapp://chemin/vers/le / ce/i/voulez-vous?d=%20is%20a%20test

doivent être traitées par ma propre application ou d'un service. Notez que le régime est "myapp" et non "http" ou "ftp". C'est précisément ce que j'entends: à définir mon propre URI de schéma à l'échelle mondiale pour le système d'exploitation Android. Est-ce possible?

C'est un peu analogue à ce que certains programmes déjà sur, par exemple, les systèmes Windows, comme Skype (skype://) ou tout torrent downloader programme (torrent://).

225voto

Daniel Lew Points 39063

C'est très possible; à vous de définir le schéma d'URI dans votre AndroidManifest.xml, à l'aide de l' <data> élément. Vous l'installation d'un filtre d'intention avec l' <data> élément rempli, et vous serez en mesure de créer votre propre schéma. (Plus sur des filtres d'intention et à l'intention de la résolution ici.)

Voici un court exemple:

<activity android:name=".MyUriActivity">
    <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="myapp" android:host="path" />
    </intent-filter>
</activity>

Selon la façon implicite les intentions de travail, vous devez définir au moins une action et une catégorie aussi bien, ici j'ai choisi de VUE que l'action (bien qu'il pourrait être n'importe quoi), et fait en sorte d'ajouter la catégorie par DÉFAUT (ce qui est requis pour toutes les intentions implicites). Notez également que j'ai ajouté la catégorie NAVIGABLES - ce n'est pas nécessaire, mais il permettra à votre Uri pour être ouverte à partir du navigateur (une fonctionnalité utile).

25voto

hackbod Points 55292

Je recommande fortement que vous définissez pas de votre propre schéma. Cela va à l'encontre des standards du web pour les modèles d'URI, qui tente pour rigidifier le contrôle de ces noms pour une bonne raison-pour éviter les conflits de noms entre les différentes entités. Une fois que vous mettez un lien vers votre programme sur un site web, vous avez mis que peu de nom dans l'ensemble de l'ensemble de l'Internet de l'espace de noms, et devrait être à la suite de ces normes.

Si vous voulez juste être en mesure d'avoir un lien vers votre propre application, je vous recommande de suivre la démarche que j'ai décrit ici:

http://stackoverflow.com/questions/2430045/how-to-register-some-url-namespace-myapp-app-start-for-accessing-your-progra/2430468#2430468

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