在Android 5 Lollipop上使用USB-MTP访问目录时,MediaScannerConnection#scanFile会将目录转换为文件

时间:2015-07-01 09:44:25

标签: android android-5.0-lollipop sony-xperia android-mediascanner

重新命名由应用程序触发的文件之类的更改仅在重新启动Android设备后显示在USB-MTP界面上,此时您在MediaScanner上注册了新文件(请参阅{{ 3}}):

file.renameTo(newFile);    
MediaScannerConnection.scanFile(context,
        new String[] { newFile.getAbsolutePath() }, null, null);

USB-MTP用于通过USB访问Android设备的存储。例如。使用Windows资源管理器。

然而,与Android {动态10.6.A.0.454下的Android 5.0.2(Build 10.6.A.0.454)下的Sony XPERIA Tablet Z(SGP321)文件夹将成为一个4KB的文件。我不再能够使用Windows资源管理器访问文件夹结构,也无法将文件复制到我的计算机上。即使重启平板电脑! Android 4.4.4的相同设备不显示该行为。似乎只有USB-MTP视图被破坏。 Android应用程序访问的文件结构看起来还不错。

问题:此行为是错误还是我错误地实现了?什么是正确的实施?

到目前为止,我已尝试解决此问题:

  1. 我目前的解决方法是避免newFile目录。
  2. 我可以通过使用没有scanFile的Android应用程序重命名文件来将文件转换回目录。重启后,我可以再次使用Windows资源管理器访问该目录。
  3. 使用实际上是目录的Windows资源管理器重命名文件不会还原它们。甚至在重启后。
  4. Trigger mediascanner on specific path (folder), how to?中建议的这一行 不刷新USB-MTP视图,但也不转换目录 进入文件:

    MediaScannerConnection#scanFile
  5. 也许相关:

1 个答案:

答案 0 :(得分:11)

我最终在每个想要显示的目录中创建一个虚拟文本文件,并在文件上使用scanFile。

1)创建目录,但不要“扫描”目录

2)将文件复制到目录

3)在filePath上运行scanFile

B