作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我当时正在为 varsity 开发一个 mp3 播放器 android 项目,到目前为止,它只包含一个 Activity ,该 Activity 递归地将所有 mp3 文件添加到手机 sd 卡上。
我的应用一直在崩溃,经过大量调试后,我注意到原因是它找到了一个隐藏目录/sdcard/.android_secure,当它尝试在此目录上调用 listFiles() 时,应用崩溃了。我通过排除处理隐藏文件来解决这个问题。
我的问题是这里究竟发生了什么?我假设我的应用无权访问 .android_secure 的内容。是否有更强大的扫描 SD 卡的方法?
我在下面添加了相关代码。感谢您的帮助。
File storage = Environment.getExternalStorageDirectory();
addMp3Files(storage);
}
private void addMp3Files(File rootDir) {
for (File file : rootDir.listFiles()) {
if (file.getName().toLowerCase().endsWith(".mp3")) {
songs.add(file.getAbsolutePath());
} else if (file.isDirectory() && !file.isHidden()) {
addMp3Files(file);
}
}
}
最佳答案
.android_secure
文件夹用于 App2SD 功能。已移动到 SD 卡的应用程序文件存储在这里。如果您检查权限位,您可以看到它是 --------
;即,您的应用程序没有此文件夹的读取权限。这就是它崩溃的原因。
要排除您的应用程序无法读取的文件和文件夹,例如 .android_secure
,您可以使用 file.canRead()
方法检查它们。
关于Android程序崩溃和.android_secure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6999828/
我当时正在为 varsity 开发一个 mp3 播放器 android 项目,到目前为止,它只包含一个 Activity ,该 Activity 递归地将所有 mp3 文件添加到手机 sd 卡上。 我
我是一名优秀的程序员,十分优秀!