无法访问Android的SD卡
**编辑无法访问Android的SD卡
不是一个SD卡,我通过适配器访问它通过USB接口,所以它可能是更好的把它看作一个USB驱动器。
经过大量的努力和研究后,我找到了一种方法来达到我正在使用的SD卡(USB驱动器)的路径。通常,路径是/ mnt/media_rw/XXXX-XXXX(其中XXXX-XXXX是sdcard(USB驱动器)的代码)。
的事情是,我想要阅读一些文件,这些文件在那里,但是当我打电话
new File("/mnt/media_rw/XXXX-XXXX").listFiles();
我得到返回一个空数组。我非常确定它里面有文件,因为我有一个电话在这里工作,但在该电话中,它不是“mnt/media_rw/XXXX-XXXX”的路径。使用与该手机相同的路径不起作用。
我已经达到通过这个帖子How can I get the list of mounted external storage of android device
这条道路我有2个权限:READ_EXTERNAL_STORAGE和READ_PHONE_STATE。我必须将它们添加到清单中并以编程方式添加它们(不知道为什么只有在两者中都添加它们时才起作用,但不会分开)。
** ADDED
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;
}
的 “getStorageList()” 方法和 “StorageUtils” 和 “StorangeInfo” 类在上面的链接。我没有改变它的代码。
如果有什么我可以添加,只是问它。
由于
有一个上下文方法检索的路径的所有的SD卡
context.getExternalFilesDirs(null)
返回到应用程序特定的目录绝对路径上的所有共享/外部存储设备,其中应用程序可以将持续它拥有的文件。
我想我试过这个不成功的。事情是我想阅读的文件不是从应用程序,但它是在外部的SD卡。 有了这个我试图寻找文件夹中的文件出现在这里或它的父母 –
张贴代码..... –
您无法通过[可移动介质]上的任意位置访问文件系统(https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage .html)在Android 4.4+上。 – CommonsWare
你认为这会对你有帮助吗? https://developer.android.com/reference/android/os/Environment.html#getExternalStoragePublicDirectory(java.lang.String) – notsopopularguy