2012-02-27 3 views
0

J'essaie d'envoyer des données à une intention ACTION_VIEW ou ACTION_SEND sans écrire ces données dans un fichier.Comment envoyer des données dans une intention sans stockage externe

La plupart des intentions veulent un Uri, qui est généralement basé sur un chemin de fichier ou URL comme ceci:

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.fromFile(new File(context.getFilesDir(), TEMP_FILE_NAME)); 
intent.setDataAndType(uri, "application/pdf"); 
context.startActivity(intent); 

Je préférerais que les données que je partage avec une intention de ne pas être visible par tous sur le stockage externe . Le stockage interne (comme dans l'exemple ci-dessus) n'est pas accordé aux intentions appelées (ce qui signifie qu'une visionneuse pdf ne peut pas voir les fichiers dans l'espace privé de mon application).

Diane Hackborne fait allusion à des données pouvant être copiées dans l'intention ici: http://groups.google.com/group/android-developers/browse_thread/thread/be9b069ca8906417#

Mais je n'ai pas trouvé d'autres données sur la façon dont cela se passerait-il.

Des idées? Merci!

Répondre

0

Cela dépend de la forme/taille de vos données, mais l'option la plus simple consiste probablement à inclure les données en tant que "extra" sur le Intent.

Extras peuvent être de différents types différents, y compris la plupart des primitives Java (String, int, double etc) et Bundle s et ArrayList s.

Si vous avez votre propre structure de classe, vous pouvez également implémenter Parcelable et inclure des instances de vos propres classes en tant que figurants.

Cependant, je dirais que si vos données sont volumineuses en volume, le faire circuler en mémoire avec le Intent n'est probablement pas la meilleure idée. Si tel est le cas, il se peut que vous deviez vous contenter de saisir les données et de les enregistrer temporairement pendant la durée de l'appel et de les effacer lorsque votre appel Activity/Service sera de nouveau concentré.

+0

Je suis d'accord avec vous sur l'utilisation d'extras pour vos propres besoins. Comment cela fonctionnerait-il pour ACTION_VIEW et ACTION_SEND pour le visionnement et l'envoi par des tiers? Que disait Diane dans le lien que j'ai posté? – Shellum

+0

Je crois que Dianne faisait référence à des figurants dans son post. Si vous tentez d'invoquer une activité/un service tiers avec votre «intention», vos options sont limitées dans une certaine mesure car ce composant tiers s'attend à recevoir des données d'une certaine manière (ce qui devrait être documenté). Si le composant tiers s'attend à recevoir un 'Uri', alors vous devrez soit utiliser le stockage interne/externe, soit créer votre propre implémentation' ContentProvider' (par exemple, sauvegardée par une base de données Sqlite) – tomtheguvnor

+0

Bon, alors juste pour vérifier , il n'y a vraiment pas un moyen sécurisé de passer un fichier à ces intentions génériques sans l'écrire sur un stockage partagé ou créer un fournisseur de contenu ouvert à tous? – Shellum

Questions connexes