2012-02-16 1 views
1

J'ai vu cette question posée plus de 100 fois mais aucune des réponses ne fonctionne pour moi. Je veux que mon application gère tous les fichiers avec des extensions ics ou vcs, * peu importe d'où elles viennent. * Sauf, je ne veux pas avoir à les télécharger moi-même s'ils viennent de http/https, je veux juste que le navigateur laisse au moins l'utilisateur les enregistrer et ensuite ouvrir avec mon application. Actuellement, le navigateur dit "contenu non pris en charge sur ce téléphone".Gérer les fichiers ics/vcs dans mon application Android, corriger le filtre d'intention

Voici ce que j'ai actuellement, mais je l'ai essayé tout:

 <intent-filter > 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:host="*" /> 
      <date android:mimeType="text/calendar" /> 
      <data android:scheme="https" /> 
     </intent-filter> 

Avec ce qui précède, lorsque je clique sur un lien https, qui vient de mon serveur et je sais que mon serveur envoie le texte/calendrier mime-type, le droïde demande quelle application il veut utiliser pour ouvrir le lien. La liste a mon application ou le navigateur. Si je sélectionne mon application, elle exécute mon activité et me donne l'Uri. Je veux que le navigateur télécharge le fichier, je ne veux pas le télécharger moi-même ... de la même manière que les autres types de fichiers, images, pdfs, etc. Si je sélectionne le navigateur, il commence le téléchargement mais s'arrête avec un "contenu non pris en charge sur ce téléphone" erreur.

J'ai aussi essayé ceci:

 <intent-filter > 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:host="*" /> 
      <data android:scheme="file" /> 
      <data android:pathPattern=".*\\.ics" /> 
     </intent-filter> 

également essayé avec le système réglé sur « contenu », et beaucoup d'autres variations que je trouve sur le SO et d'autres endroits.

Répondre

0

Vous devez considérer que les navigateurs implémentent ce comportement de téléchargement pour les fichiers binaires et vous ne pouvez pas le modifier par un filtre d'intention.

D'autres applications comme la visionneuse PDF déclarent un filtre d'intention identique à votre seconde approche (à l'exception de l'extension de fichier).

Par conséquent, je recommanderais simplement de télécharger le fichier vous-même. Comme il suffit de quelques lignes de code, cela ne devrait pas poser de gros problèmes.

+0

J'étais sur le point de répondre moi-même, mais je suis content que quelqu'un d'autre l'ait fait en premier. Bien que je n'aime pas le design, je pense que vous avez raison et que c'est "juste comme ça". Je ne suis pas d'accord avec le fait que "ça ne nécessite que quelques lignes de code", pas pour le faire de manière robuste, capable de gérer les interruptions, les redémarrages d'activité, les rotations d'écrans, etc ... mais je suis d'accord Je l'aime ou pas. Juste semble vraiment bizarre, d'autant plus que le navigateur a dû frapper le serveur web pour obtenir le type mime, et maintenant je dois le faire à nouveau pour le télécharger (semble également comme des problèmes possibles avec les cookies). – eselk

Questions connexes