我发现不同版本的android将接收到的蓝牙文件放在不同的文件夹中。例如,我的一部测试手机正在运行android 2.2
将文件保存到此路径:
/mnt/sdcard/Downloads/Bluetooth
我的第二部测试手机正在运行android 4.0
在这里保存文件
/mnt/sdcard/Bluetooth
这个操作系统是“问题”还是手机制造时就设置的?
如果第一个语句是正确的,我可以检查正在运行的 Android 版本以及指向蓝牙文件夹吗?或者有更简单的方法来做到这一点吗?
Thanks!
几个小时后,我提出了两种方法来做到这一点。您应该将这些方法放在AsyncTask
or a Thread
。所以这是我的两种方法:
public List<File> folderSearchBT(File src, String folder)
throws FileNotFoundException {
List<File> result = new ArrayList<File>();
File[] filesAndDirs = src.listFiles();
List<File> filesDirs = Arrays.asList(filesAndDirs);
for (File file : filesDirs) {
result.add(file); // always add, even if directory
if (!file.isFile()) {
List<File> deeperList = folderSearchBT(file, folder);
result.addAll(deeperList);
}
}
return result;
}
这是一种递归方法,它将添加目录中的所有文件夹src
参数放入列表中。
我这里用的是这个方法中的这个方法:
public String searchForBluetoothFolder() {
String splitchar = "/";
File root = Environment.getExternalStorageDirectory();
List<File> btFolder = null;
String bt = "bluetooth";
try {
btFolder = folderSearchBT(root, bt);
} catch (FileNotFoundException e) {
Log.e("FILE: ", e.getMessage());
}
for (int i = 0; i < btFolder.size(); i++) {
String g = btFolder.get(i).toString();
String[] subf = g.split(splitchar);
String s = subf[subf.length - 1].toUpperCase();
boolean equals = s.equalsIgnoreCase(bt);
if (equals)
return g;
}
return null; // not found
}
希望这有帮助,伙计们!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)