在我的应用程序中,我使用下面的代码列出存储中的 Movies
文件夹中的电影。但自从我将我的 Nexus 7 平板电脑升级到 Android 4.4 后,此代码无法正常工作(代码末尾的 toast 弹出,意味着代码在该文件夹中没有找到任何文件,我什至不知道它是否可以访问该文件夹)。知道我应该更改什么或新更新中更改了什么吗?
private void populateSpinners() {
Boolean foundVideoFiles;
// videos spinner
File videoFolder =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
.getAbsoluteFile();
if (videoFolder.listFiles() != null) {
foundVideoFiles = true; //found some files
ArrayAdapter<File> movieAdapter = new ArrayAdapter<File>(this,
android.R.layout.simple_spinner_dropdown_item, videoFolder.listFiles());
_spinner_videos.setAdapter(movieAdapter);
//Restore perviously selected video
int spinnerValue = _preferences.getInt("spinner_videos", -1);
if (spinnerValue != -1) {
_spinner_videos.setSelection(spinnerValue);
}
} else {
foundVideoFiles = false;
}
//Error handling
if (foundVideoFiles == false) {
Toast.makeText(this, "ERROR: NO MOVIES WERE FOUND IN" + videoFolder, Toast.LENGTH_LONG).show();
}
}
如果我在平板电脑上使用图库应用程序,我可以在那里看到电影,因此更新期间电影不会被删除。
最佳答案
请注意,从 Android 4.4 开始(根据 Android 4.4 Important Behavior Changes :
Your app can not read shared files on the external storage when running on Android 4.4, unless your app has the READ_EXTERNAL_STORAGE permission. That is, files within the directory returned by getExternalStoragePublicDirectory() are no longer accessible without the permission.
确保将该权限添加到您的 list 中:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
关于java - 更新到 Android 4.4 KitKat 后无法找到 Movies 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20166932/