7 votes

Schéma d'URL : Comment créer un lien qui ouvrira un document dans l'application Google Drive ?

J'essaie de créer une page Web qui intègre plusieurs documents Google. Mon problème est que lorsque cette page est affichée sur un appareil Android, l'utilisateur se voit présenter le terrible éditeur Google Docs basé sur le Web. J'aimerais donc avoir un lien sur ma page, qui ouvre l'application Google Drive native sur le téléphone de l'utilisateur, afin qu'il puisse y modifier le document. Après avoir cherché pendant deux heures, je ne parviens pas à trouver comment créer un lien qui ouvre automatiquement le document dans l'application native.

J'ai réussi à afficher l'application Google Drive dans google market en utilisant le lien suivant :

market://details?id=com.google.Android.apps.docs

J'ai également expérimenté avec

googledrive://no-idea-what-to-write-here

Mais cela n'a pas réussi non plus.

Est-ce possible, ou est-ce que cela ne fonctionne que sur iOS ?

10voto

Sergey Vlasov Points 628

Il ne semble pas y avoir de bon moyen de faire ce que vous voulez (du moins d'après mes tests avec Android 4.0.4 ; la situation est peut-être différente avec d'autres versions).

Utilisation de http: o https: liens interceptés par une application

En théorie, il suffit d'utiliser le https://docs.google.com/... Le lien vers le document devrait fonctionner pour vous. D'après cette réponse sur StackOverflow , interceptant http: o https: URLs est la manière appropriée de lancer une application lors de l'ouverture d'un lien à partir du navigateur Android. C'est exactement ce que fait l'application Google Drive : elle enregistre des filtres d'intention pour les URL. https://drive.google.com , https://docs.google.com , https://spreadsheets.google.com et un tas d'URLs similaires (y compris http: avec les mêmes noms d'hôtes). Et cela fonctionne réellement - lorsque vous utilisez le navigateur Android standard, vous tentez d'ouvrir un lien pointant sur https://drive.google.com fait apparaître une fenêtre de sélection dans laquelle l'application Google Drive est incluse dans la liste (ainsi que tous les navigateurs installés) ; la sélection de Google Drive entraîne l'ouverture du document dans l'éditeur Google Drive, comme vous le souhaitez.

Mais le problème est que de telles URL HTTP[S] interceptées fonctionnent uniquement dans le navigateur Android standard  - Je n'ai pas pu trouver de navigateur tiers capable d'afficher le sélecteur d'applications en suivant de tels liens. J'ai testé Chrome, Dolphin, Firefox, Light Browser, Opera (y compris Classic et Mini), UC Browser, et tous ont simplement ouvert le lien en interne au lieu de proposer de le transmettre à l'application Google Drive.

Utilisation de la intent: Schéma URI

Il existe un autre moyen de créer un lien qui démarre une application Android - utilisez la fonction intent: schéma URI. Je n'ai pas été en mesure de trouver une documentation appropriée pour l'option intent: URI ; bien entendu, le format code source de la fonction qui génère ces URIs est disponible.

Para votre document de test :

https://docs.google.com/document/d/1zSzDnV-90Ke3dzCCJ2CZ6iQ3JQ3F1hL1udGDqbNwwbY/edit?usp=sharing

le correspondant intent: Le lien qui l'ouvre dans l'application Google Drive sera le suivant :

intent://docs.google.com/document/d/1zSzDnV-90Ke3dzCCJ2CZ6iQ3JQ3F1hL1udGDqbNwwbY/edit?usp=sharing#Intent;scheme=https;action=android.intent.action.VIEW;category=android.intent.category.DEFAULT;category=android.intent.category.BROWSABLE;package=com.google.android.apps.docs;end

Un lien de test avec cette URI est sur une page séparée (il n'est pas possible de créer un lien réel pointant vers cette URI ici).

Le processus de conversion est le suivant :

  1. Remplacer le démarrage https: con intent: .

  2. Ajouter des paramètres d'intention :

    #Intent;scheme=https;action=android.intent.action.VIEW;category=android.intent.category.DEFAULT;category=android.intent.category.BROWSABLE;package=com.google.android.apps.docs;end

    Ici scheme=https correspondent à https: dans l'URL d'origine, donc si vous voulez convertir un simple http: URL, ce champ doit être scheme=http . Et package=com.google.android.apps.docs est le nom du paquet de l'application qui doit gérer le lien.

Désormais, lorsque ce lien est suivi, le navigateur devrait ouvrir directement l'application Google Drive (sans afficher le sélecteur d'applications). Toutefois, si l'application n'est pas installée, Android ouvrira l'application Market à la place et effectuera une recherche pour le nom du paquet spécifié, afin que l'utilisateur puisse installer l'application requise.

Il est également possible de rendre le intent: sans le lien package paramètre :

intent://docs.google.com/document/d/1zSzDnV-90Ke3dzCCJ2CZ6iQ3JQ3F1hL1udGDqbNwwbY/edit?usp=sharing#Intent;scheme=https;action=android.intent.action.VIEW;category=android.intent.category.DEFAULT;category=android.intent.category.BROWSABLE;end

Dans ce cas, le comportement devrait être le même que lorsque l'intercepté https: est suivi dans le navigateur Android standard - le sélecteur d'applications avec l'application Google Drive et toutes les applications du navigateur sera affiché, et si l'application Google Drive n'est pas installée, l'utilisateur ne sera pas redirigé pour l'installer à partir de Market.

Contrairement à l'interception http: y https: liens, intent: Les liens fonctionnent dans un plus grand nombre d'applications de navigateur Android ; malheureusement, certains navigateurs ne les prennent pas en charge. Résultats de mes tests :

Et, évidemment, les navigateurs autres qu'Android ne supporteront pas du tout de tels liens. Vous devrez donc utiliser une sorte de reniflage du navigateur si vos pages doivent également être utilisables par d'autres clients.

Utilisation d'un schéma URI personnalisé

Certaines applications utilisent des schémas d'URI complètement non standard, qui peuvent également fonctionner avec des navigateurs tiers. Cependant, l'application Google Drive ne fait pas cela et cette solution n'est donc pas adaptée (à moins que quelqu'un ne crée une application "pont" qui ne fait que transmettre les demandes à l'application Google Drive).

Certains navigateurs peuvent également refuser les schémas d'URI non standard, à l'exception de ceux figurant sur une liste blanche (tels que market: ) pour des raisons de sécurité ; je n'ai pas essayé de le tester.

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