Comment ouvrir un fichier dans Android via une Intention
comment puis-je ouvrir un fichier qui a été précédemment stockées dans le "privat" système de fichiers? Le fichier est téléchargé par un webservice et doivent être stockés sur le local fs.
J'ai eu un "étrange" erreur lorsque vous essayez d'ouvrir le fichier via une Intention (Action_View). Bien que le fichier est présent dans le système de fichiers (vu le fichier dans l'explorateur de fichiers de l'émulateur/eclipse), il ne sera indiqué dans l'appel de la galerie de l'activité qui est lancé. Au lieu de l'image de la galerie affiche un écran noir avec non pas sur le contenu (à l'exception de la barre d'action). La même chose se produit lorsque vous essayez d'ouvrir un fichier pdf/film/mp3 fichier par l'intermédiaire de cette méthode (pdf dit par exemple que le fichier est corrompu).
BTW: Les données qui ont été stockées sur le local fs est valide (non corrompus), j'ai téléchargé les fichiers à partir du débogueur (via la méthode "pull") et les fichiers peuvent être ouverts sur mon poste de travail...
public void onAttachment(Context context, Attachment attachment) {
try {
//Attachment is a structured data object that contains of a byte[], filename and mimetype (like image/jpeg)
FileOutputStream fos = FileOutputStream fos = context.openFileOutput(attachment.getAttachmentFileName(), Context.MODE_PRIVATE);
fos.write(attachment.getBinary());
fos.flush();
fos.close();
File f = context.getFileStreamPath(attachment.getAttachmentFileName());
Uri uri = Uri.fromFile(f);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri,attachment.getAttachmentMimetype());
context.startActivity(intent);
} catch (IOException e) {
e.printStackTrace();
}
}
OriginalL'auteur tim.kaufner | 2012-09-25
Vous devez vous connecter pour publier un commentaire.
De quel type de pièce Jointe dans votre code? Peut-être qu'il retourne mauvais type mime?
Ce code fonctionne pour moi:
La pièce jointe retourne le type mime correct, sinon la bonne activité (Galerie/Mediaplayer/PDF-Reader) ne pas être démarré à tous.
Mal. Le paramètre de getMimeTypeFromExtension DOIT être une extension de fichier (sans le '.'.
Ne fonctionne pas lorsque le ciblage Android N.
ce qui a fonctionné pour moi. J'ai été appeler
Uri.parse(file.getPath())
au lieu deUri.fromFile(file)
.OriginalL'auteur Andy
Vous ne pouvez pas ouvrir les fichiers qui ne sont pas sur la carte sd comme ça.
Vous aurez besoin de copier le fichier sur la carte sd et ensuite de l'ouvrir.
Malheureusement, je parle par expérience, donc je n'ai pas de lien. MAIS ses le même problème que le téléchargement de ou en envoyant un fichier ce n'est pas dans la carte sd... c'est la même chose avec l'ouverture de la webview pages & etc.. Espérons que cela aide... Désolé si ce n'est..
Donc, je dois écrire propre Spectateur-"Activités" qui peut gérer les fichiers qui sont stockés sur ce dossier privé?
Ou tout simplement de les copier dans un dossier privé sur la SDCARD, et si vous voulez les supprimer après. Privé (en fait invisible )dossier sur la carte sd: Environnement.getExternalStorageDirectory() + "/.priavte_dir"
Mais les fichiers seront accessibles (par une autre application, par exemple un filebrowser-app) après que... vous devez Aussi vous impliquer que l'utilisateur dispose d'une carte sd et il doit être monté trop. Hm...
OriginalL'auteur Givi
Lors de la configuration de l'emplacement de "
openFileOutput("fileName", Activity.MODE_WORLD_READABLE)
" il va travailler. D'autres applications ne peuvent pas lire les données (même pour les visualiser) stockées lorsque le paramètre "Context.MODE_PRIVATE
"voir d'autres post sur stackoverflow
OriginalL'auteur tim.kaufner