Marshmallow (6.0.1) 上缺少由我的应用程序创建的文件夹
A folder created by my app is missing on Marshmallow (6.0.1)
在我的 android-app 中,我在设备的内部存储器上创建了一个文件夹。
当我浏览内部存储时,我可以看到文件夹及其内容。
当我将设备连接到我的电脑并打开内部存储时,该文件夹丢失了。所有其他文件夹都可用,但我从我的应用程序创建的文件夹不可用。
我尝试为我的 windows 打开 "show invisible files",但文件夹仍然丢失。有什么建议吗?
我尝试使用 Vijai 的回答中的 MediaScannerConnection.scanFile。在此之后,我可以看到该文件,但不显示为目录。双击它没有任何反应。
文件夹本身是由我的数据库管理员创建的。它是 SQLiteOpenHelper-class 的扩展class。
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();
}
长期以来一直运行良好。我过去能看到目录。由于我的客户将他的 phone 更改为 android 6.0.1,因此该文件不再可见。
要扫描文件夹中的所有文件,您可以构建一个包含文件路径的字符串数组并将其传递给 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 模式很烂!
在我的 android-app 中,我在设备的内部存储器上创建了一个文件夹。
当我浏览内部存储时,我可以看到文件夹及其内容。
当我将设备连接到我的电脑并打开内部存储时,该文件夹丢失了。所有其他文件夹都可用,但我从我的应用程序创建的文件夹不可用。
我尝试为我的 windows 打开 "show invisible files",但文件夹仍然丢失。有什么建议吗?
我尝试使用 Vijai 的回答中的 MediaScannerConnection.scanFile。在此之后,我可以看到该文件,但不显示为目录。双击它没有任何反应。
文件夹本身是由我的数据库管理员创建的。它是 SQLiteOpenHelper-class 的扩展class。
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();
}
长期以来一直运行良好。我过去能看到目录。由于我的客户将他的 phone 更改为 android 6.0.1,因此该文件不再可见。
要扫描文件夹中的所有文件,您可以构建一个包含文件路径的字符串数组并将其传递给 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 模式很烂!