90 votes

Android : Comment ouvrir un dossier spécifique via Intent et afficher son contenu dans un navigateur de fichiers ?

Je pensais que ce serait facile, mais ce n'est malheureusement pas le cas.

Ce que j'ai :

J'ai un dossier appelé "myFolder" sur mon stockage externe (pas la carte sd car il s'agit d'un Nexus 4, mais cela ne devrait pas être le problème). Le dossier contient quelques *.csv des dossiers.

Ce que je veux :

Je veux écrire une méthode qui fait ce qui suit : Afficher une variété d'applications (navigateurs de fichiers) parmi lesquelles je peux en choisir une (voir l'image). Après avoir cliqué dessus, le navigateur de fichiers sélectionné doit démarrer et m'afficher le contenu de "monDossier". Rien de plus, rien de moins.

enter image description here

Ma question :

Comment faire exactement ? Je pense que j'y suis arrivé avec le code suivant, mais quoi que je fasse - et je suis certain qu'il y a quelque chose que je n'ai pas encore compris - il n'ouvre toujours que le dossier principal du stockage externe.

public void openFolder()
{
File file = new File(Environment.getExternalStorageDirectory(),
    "myFolder");

Log.d("path", file.toString());

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setDataAndType(Uri.fromFile(file), "*/*");
startActivity(intent);
}

-4voto

Iman Marashi Points 2465
File temp = File.createTempFile("preview", ".png" );
String fullfileName= temp.getAbsolutePath();
final String fileName = Uri.parse(fullfileName)
                    .getLastPathSegment();
final String filePath = fullfileName.
                     substring(0,fullfileName.lastIndexOf(File.separator));
Log.d("filePath", "filePath: " + filePath);

Nom du fichier complet :

/mnt/sdcard/Download_Manager_Farsi/preview.png

chemindefichier :

/mnt/sdcard/Download_Manager_Farsi

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