** EDITImpossible d'accéder à la carte SD android
Au lieu d'un sdcard, je suis d'y accéder via des adaptateurs via le port USB, il pourrait être préférable de le considérer comme un lecteur USB. Après beaucoup de lutte et de recherche, j'ai été en mesure de trouver un moyen d'atteindre le chemin de la carte SD (clé USB) avec laquelle je travaillais. En général, le chemin est/mnt/media_rw/XXXX-XXXX (où XXXX-XXXX est un code de la carte SD (clé USB)).
La chose est, je suis en train de lire certains fichiers qui sont là-dedans, mais quand je l'appelle
new File("/mnt/media_rw/XXXX-XXXX").listFiles();
-je obtenir un tableau qui retourne null. Je suis assez certain qu'il a des fichiers à l'intérieur, car j'ai un téléphone où cela fonctionne, mais dans ce téléphone, le chemin n'est pas "mnt/media_rw/XXXX-XXXX". L'utilisation du même chemin que dans ce téléphone ne fonctionne pas.
Je suis arrivé à ce chemin à travers ce poste How can I get the list of mounted external storage of android device
J'ai 2 autorisations: READ_EXTERNAL_STORAGE et READ_PHONE_STATE. J'ai dû les ajouter bot dans le manifeste et par programmation (ne sais pas pourquoi ne fonctionne que si les ajouter dans les deux, mais pas séparés).
** AJOUTÉE
public static String findFileInStorages(String filename) throws Exception {
List<StorageUtils.StorageInfo> storageList = StorageUtils.getStorageList(); // Here i get 2 paths: 1) /storage/emulated/0; 2) /mnt/media_rw/XXXX-XXXX
for(int i = 0; i < storageList.size(); i++) {
String pathToFile = findFileWithBasePath(new File(storageList.get(i).path, filename);
if (pathToFile != null) return pathToFile;
}
throw new Exception("Couldn't find file");
}
public static String findFileWithBasePath(File file, String fileName) throws Exception {
File listFile[] = file.listFiles();
String outputFile = null;
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
outputFile = findFileWithBasePath(listFile[i], fileName);
} else {
if(listFile[i].getName().contains(fileName)) {
return listFile[i].getAbsolutePath();
}
}
if (outputFile != null) return outputFile;
}
}
return null;
}
La méthode "getStorageList()" et "StorageUtils" et des classes "StorangeInfo" sont dans le lien ci-dessus. Je n'ai pas changé une chose du code dedans.
S'il y a quelque chose que je peux ajouter, il suffit de le demander.
Merci
Postez votre code ..... –
Vous n'avez pas accès au système de fichiers à des emplacements arbitraires sur [support amovible] (https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage .html) sur Android 4.4+. – CommonsWare
Pensez-vous que cela vous aidera? https://developer.android.com/reference/android/os/Environment.html#getExternalStoragePublicDirectory(java.lang.String) – notsopopularguy