在我的android-app中,我在设备的内部存储上创建了一个文件夹。 当我浏览内部存储时,我可以看到该文件夹及其内容。
当我将设备连接到电脑并打开内部存储时,文件夹丢失了。所有其他文件夹都可用,但不是我从我的应用程序创建的文件夹。
我试图打开"显示不可见的文件"对于我的窗户,但文件夹仍然缺失。有什么建议吗?
我尝试使用Vijai的回复中的MediaScannerConnection.scanFile。在此之后,我可以看到该文件,但不会显示为导演。双击它没有任何反应。
该文件夹本身由我的databasemanager创建。它是SQLiteOpenHelper类的扩展类。
private DatabaseManager(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION); //DATABASE_NAME = Environment.getExternalStorageDirectory() + File.separator + "[Name of my directorie]" + File.separator + "[Name of my db].DB";
mContext = context;
getWritableDatabase();
}
这种情况很好。我能够看到过去的目录。由于我的客户将手机更改为Android 6.0.1,因此该文件不再可见。
答案 0 :(得分:2)
要扫描文件夹中的所有文件,您可以构建一个包含文件路径的String数组,并将其传递给mediascanner的scanFile()方法。
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) {
File dir = new File(Environment.getExternalStorageDirectory(), "yourdirectory");
// Create empty directory and its missing parent directories
dir.mkdirs();
if (dir.exists())
MediaScannerConnection.scanFile(this, buildFilePaths(dir), null, null);
}
private String[] buildFilePaths(File directory){
File[] files = directory.listFiles();
ArrayList<String> filePaths = new ArrayList();
for (File file : files)
filePaths.add(file.getAbsolutePath());
return filePaths.toArray(new String[filePaths.size()]);
}
-----原始答案-----
您必须重新扫描存储以显示目录(android会每隔一段时间或在启动期间执行整个系统介质扫描)
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) {
File dir = new File(Environment.getExternalStorageDirectory(), "yourdirectory");
// Create empty directory and its missing parent directories
dir.mkdirs();
if (dir.exists())
MediaScannerConnection.scanFile(this, new String[] {dir.toString()}, null, null);
}
p.s:MTP模式很糟糕!