我正在用Java编写Android插件。一个功能是检测USB存储连接并返回到该USB存储的路径。这段代码工作正常,但我有一个问题,第二个函数应该从第一个函数获得这个路径(例如:/storage/BA 4862 GJI),列出此USB根目录中的所有文件,并返回具有给定扩展名的最新文件(例如.txt).从Android 11权限MANAGE_EXTERNAL_STORAGE
是不够的了.你能指导我如何获得适当的权限,并获得文件列表?获取具有给定扩展名的所有文件的函数如下所示:
private List<File> getFilesWithExtension(File directory, final String extension) {
try {
List<File> found = Files.walk(directory.toPath(), 1)
.filter(p -> {
try {
return Files.isRegularFile(p) && Files.isReadable(p);
} catch (Exception e) {
return false;
}
})
.filter(file -> file.getFileName().toString().endsWith(extension))
.map(Path::toFile)
.collect(Collectors.toList());
return found;
} catch (IOException e) {
Log.e("USBManager", "Failed to retrieve files with extension: " + e.getMessage());
return new ArrayList<>();
}
}
字符串
- 谢谢-谢谢
1条答案
按热度按时间2hh7jdfx1#
您应该从
getExternalFilesDirs()
获取路径。如果该功能不提供路径到usb驱动器,那么你必须使用SAF与
ACTION_OPEN_DOCUMENT_TREE
,让用户选择驱动器。