2

我正在开发的应用程序在这里遇到了一个奇怪的问题。它使用 Apache Codova 3.0.0 和 stock 文件插件在带有 Android 4.3 的三星 Galaxy Nexus 的外部存储上创建一个目录,并在其中添加一些文件。

这里发生的情况是我实际上能够做到这一点,但是当我将设备作为大容量存储设备连接到计算机时,包含文件的创建目录没有显示出来。所有其他文件夹都正常显示,但我创建的文件夹除外。但是,当我使用“adb shell”浏览设备时,我可以看到该文件夹​​,并且“ls -al”中的目录模式与所有其他目录模式完全相同。READ 和 WRITE 权限被授予应用程序。

我也在 Android 代码中尝试过相同的操作,它的行为完全相同:

File f = new File(Environment.getExternalStorageDirectory().toString()+"/myFolder");
if (!f.isDirectory()) {
    f.mkdir();
    Log.i("myApp", "Created directory: "+f);
}

此操作成功,但当我将设备重新连接到计算机时,该文件夹再次不可见。提一下:我从 IDE 运行应用程序 - 所以也许:是否有沙箱或我不知道的沙箱,这可能导致使用 adb shell 在 /sdcard 中显示内容,但在连接为外部存储时不显示?

我想我必须在这里错过一些基本的东西,希望你们能回答我:)

谢谢!

4

2 回答 2

4

新文件和文件夹可能需要一些时间才能通过 MTP 显示。如果您可以通过 看到您的文件夹adb,那么您的代码运行良好。

MTP 索引由 Android 不时完成(我不确定确切的时间延迟),因此新文件不会在创建后立即显示。您可以尝试通过代码强制运行 MediaScanner 以强制索引,或重新启动设备。

于 2013-08-21T20:36:30.250 回答
1

确保不要调用MediaScannerConnection.scanFile目录,只调用文件。在那种情况下,我的 Lg(Android 4.4.2)将 MTP 中显示的目录作为常规文件!

于 2015-01-20T14:30:52.967 回答