【问题标题】:A folder created by my app is missing on Marshmallow (6.0.1)Marshmallow (6.0.1) 上缺少我的应用程序创建的文件夹
【发布时间】:2018-02-13 11:37:55
【问题描述】:

在我的 android-app 中,我在设备的内部存储上创建了一个文件夹。 当我浏览内部存储时,我可以看到文件夹及其内容。

当我将设备连接到我的电脑并打开内部存储时,该文件夹丢失了。所有其他文件夹都可用,但我从应用程序创建的文件夹不可用。

我尝试为我的 Windows 打开“显示不可见文件”,但该文件夹仍然丢失。有什么建议吗?

我尝试使用 Vijai 的回答中的 MediaScannerConnection.scanFile。在此之后,我可以看到该文件,但不显示为目录。双击它没有任何反应。

我的数据库管理员正在创建文件夹本身。它是 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,因此该文件不再可见。

【问题讨论】:

  • 您的手机或笔记本电脑中没有显示哪个文件夹?
  • 我的电脑上没有红色边框的文件夹,但在我的设备上可用
  • 你现在可以在笔记本电脑上使用哪个系统??
  • yessssssssssss

标签: android android-internal-storage


【解决方案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 模式很烂!

【讨论】:

  • 我会将这个添加到我的问题中,我无法在 cmets 中发布图片。现在显示了一个名称正确的文件,但它不是目录。双击它,没有任何反应。
  • 好吧,我想你创建的目录可能是错误的?使用显示目录创建的代码更新问题
  • @Olli 检查我更新的答案。已添加代码以创建目录
  • 检查我更新的问题。该文件夹由 sqliteopenhelper 类自动创建。这已经工作了很长时间。我总是能够看到和浏览 Windows 上的文件夹。因为我的客户把他的手机换成了 android 6.0.1,所以就看不到了。
  • 如果我重启手机。该目录及其子目录及其文件是可见的。如果我使用这种方法,则会有一个名称正确的目录,但它是空的。它也没有显示为真实目录(查看更新的问题)。
猜你喜欢
  • 1970-01-01
  • 2020-05-10
  • 1970-01-01
  • 1970-01-01
  • 2016-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多