gpt4 book ai didi

java - 在 Android 外部存储上创建的文件夹通过 MTP 不可见,但显示在 adb shell 中

转载 作者:太空狗 更新时间:2023-10-29 16:19:32 27 4
gpt4 key购买 nike

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

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

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

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

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

我想我一定错过了一些基本的东西,希望你们能给我一个答案:)

谢谢!

最佳答案

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

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

关于java - 在 Android 外部存储上创建的文件夹通过 MTP 不可见,但显示在 adb shell 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18366710/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com