可能重复:
Android 文件选择器
我需要在我的 Android 应用程序中包含一个文件选择器,它返回所选文件的完整文件路径。
但我不知道如何实现这一点。
我还没有在 Stackoverflow 中寻找这个问题,但我还没有找到我的问题的明确答案。
我找到了如何从图库中的图像中获取文件路径,但没有关于获取所有其他文件类型的文件路径的方法。
可能重复:
Android 文件选择器
我需要在我的 Android 应用程序中包含一个文件选择器,它返回所选文件的完整文件路径。
但我不知道如何实现这一点。
我还没有在 Stackoverflow 中寻找这个问题,但我还没有找到我的问题的明确答案。
我找到了如何从图库中的图像中获取文件路径,但没有关于获取所有其他文件类型的文件路径的方法。
private List<String> FindFiles(Boolean fullPath) {
final List<String> tFileList = new ArrayList<String>();
String[] fileTypes = new String[]{"dat","doc","apk"....}; // file extensions you're looking for
FilenameFilter[] filter = new FilenameFilter[fileTypes .length];
int i = 0;
for (final String type : fileTypes ) {
filter[i] = new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith("." + type);
}
};
i++;
}
FileUtils fileUtils = new FileUtils();
File[] allMatchingFiles = fileUtils.listFilesAsArray(
new File("/sdcard"), filter, -1);
for (File f : allMatchingFiles) {
if (fullPath) {
tFileList.add(f.getAbsolutePath());
}
else {
tFileList.add(f.getName());
}
}
return tFileList;
}
public class FileUtils {
public File[] listFilesAsArray(File directory, FilenameFilter[] filter,
int recurse) {
Collection<File> files = listFiles(directory, filter, recurse);
File[] arr = new File[files.size()];
return files.toArray(arr);
}
public Collection<File> listFiles(File directory,
FilenameFilter[] filter, int recurse) {
Vector<File> files = new Vector<File>();
File[] entries = directory.listFiles();
if (entries != null) {
for (File entry : entries) {
for (FilenameFilter filefilter : filter) {
if (filter == null
|| filefilter
.accept(directory, entry.getName())) {
files.add(entry);
Log.v("FileUtils", "Added: "
+ entry.getName());
}
}
if ((recurse <= -1) || (recurse > 0 && entry.isDirectory())) {
recurse--;
files.addAll(listFiles(entry, filter, recurse));
recurse++;
}
}
}
return files;
}
}