Comment ouvrir privé de fichiers enregistrés sur la mémoire interne à l'aide de l'Intention.ACTION_VIEW?
Je cherche un exemple de programme pour stocker un fichier dans la mémoire interne et de l'ouvrir à l'aide de
L'intention.ACTION_VIEW.
Pour stocker le fichier en mode privé, j'ai suivi les étapes indiquées ici.
J'ai été en mesure de trouver le fichier créé dans la mémoire interne dans /data/data/com.storeInternal.poc/fichiers .*
Mais quand j'ai essayé d'ouvrir le fichier,il ne s'ouvre pas.
Veuillez trouver ci-dessous le code que j'ai utilisé pour cela.
public class InternalStoragePOCActivity extends Activity {
/** Called when the activity is first created. */
String FILENAME = "hello_file.txt";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
createFile();
openFile(FILENAME);
}
public FileOutputStream getStream(String path) throws FileNotFoundException {
return openFileOutput(path, Context.MODE_PRIVATE);
}
public void createFile(){
String string = "hello world!";
FileOutputStream fout = null;
try {
//getting output stream
fout = getStream(FILENAME);
//writng data
fout.write(string.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(fout!=null){
//closing the output stream
try {
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void openFile(String filePath) {
try {
File temp_file = new File(filePath);
Uri data = Uri.fromFile(temp_file);
String type = getMimeType(data.toString());
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(data, type);
startActivity(intent);
} catch (Exception e) {
Log.d("Internal Storage POC ", "No Supported Application found to open this file");
e.printStackTrace();
}
}
public static String getMimeType(String url) {
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
if (extension != null) {
MimeTypeMap mime = MimeTypeMap.getSingleton();
type = mime.getMimeTypeFromExtension(extension);
}
return type;
}
}
Comment puis-je ouvrir le fichier stocké à l'aide de Contexte.MODE_PRIVATE par/application appropriée. Par exemple: fichier.fichier pdf doit être ouvert que par un lecteur de PDF,de Vidéo en vidéo, les Joueurs,etc.
- voir ma réponse ici: stackoverflow.com/questions/15377373/...
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas partager/envoyer un fichier dans la mémoire de stockage interne, comme il est indiqué par un URI, par l'intermédiaire d'une Intention à une autre application. Une application ne peut pas lire une autre application à des données privées (sauf si c'est par l'intermédiaire d'un Fournisseur de Contenu). Vous passez l'URI du fichier dans l'intention (et non le fichier lui-même) et l'application qui reçoit le but de besoins pour être en mesure de lire à partir d'URI.
La solution la plus simple est de copier le fichier de stockage externe de la première et de la partager à partir de là. Si vous ne voulez pas le faire, créer un Fournisseur de Contenu pour exposer votre fichier. Un exemple peut être trouvé ici: Créer et Partager un Fichier à partir de la mémoire de Stockage Interne
EDIT: Pour utiliser un fournisseur de contenu:
D'abord créer votre fournisseur de contenu de classe comme ci-dessous. L'important, remplacer ici est "openFile'. Lors de votre fournisseur de contenu est appelé avec un URI du fichier, cette méthode va fonctionner et de retour d'un ParcelFileDescriptor pour elle. Les autres méthodes doivent être présents, car ils sont abstraits dans ContentProvider.
Définir votre fournisseur dans le Manifeste à l'intérieur de la balise application, avec exporté=true pour permettre à d'autres applications pour l'utiliser:
Dans le openFile() la méthode que vous avez dans votre Activité, mettre en place un URI comme ci-dessous. Cette URI points pour le fournisseur de contenu dans votre forfait ainsi que le nom de fichier:
Enfin, cette uri dans l'intention:
Oubliez pas d'insérer votre propre nom de package où j'ai utilisé 'votre.package.le nom " ci-dessus.
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
android.support.v4.content.FileProvider
?[Note : Veuillez sélectionner le type mime selon votre type de fichier]
Si quelqu'un est toujours confrontée à une question comme: le fichier n'a pas pu être consulté. Cela peut aider à l'u. Avec le fournisseur de contenu u pour définir l'indicateur suivant aussi...
ou