gpt4 book ai didi

android - 无法访问android的sdcard

转载 作者:行者123 更新时间:2023-11-29 01:08:02 26 4
gpt4 key购买 nike

** 编辑

我不是通过 SD 卡访问它,而是通过适配器通过 USB 端口访问它,因此最好将其视为 USB 驱动器。

经过大量的努力和研究,我找到了一种方法来到达我正在使用的 SD 卡(USB 驱动器)的路径。一般来说,路径是/mnt/media_rw/XXXX-XXXX(其中XXXX-XXXX是sdcard(U盘)的代码)。

问题是,我正在尝试读取其中的一些文件,但是当我调用

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。我不得不在 list 中以编程方式将它们添加到机器人中(不知道为什么只有在将它们同时添加但不分开时才有效)。

** 添加

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)

返回所有共享/外部存储设备上特定于应用程序的目录的绝对路径,应用程序可以在其中放置它拥有的持久文件。

关于android - 无法访问android的sdcard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45569482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com