我在使用 Android 4.0.2 的三星 Nexus 时遇到了非常奇怪的问题。我写了一个简单的程序,基本上每次用户按下按钮时都会创建文件。我的程序在 Galaxy Nexus Windows/Mac 上无法在 SD 卡上看到这些文件的其他设备上运行良好,但是当我执行 adb shell 时,我看到了 SD 卡上的所有文件。
我在另一个具有 Android 4.0.4 但结果仍然相同的 Nexus 上重新测试。
可能是什么原因?
我在使用 Android 4.0.2 的三星 Nexus 时遇到了非常奇怪的问题。我写了一个简单的程序,基本上每次用户按下按钮时都会创建文件。我的程序在 Galaxy Nexus Windows/Mac 上无法在 SD 卡上看到这些文件的其他设备上运行良好,但是当我执行 adb shell 时,我看到了 SD 卡上的所有文件。
我在另一个具有 Android 4.0.4 但结果仍然相同的 Nexus 上重新测试。
可能是什么原因?
您可能需要通过MediaScannerConnection
. 从去年的一篇博文中引用自己的话:
... MTP 内容不是基于外部存储的文字内容。相反,MTP 内容基于 MediaScannerConnection 扫描的文件。如果您将文件写入外部存储,除非该文件被 MediaScannerConnection 扫描,否则用户将无法通过 MTP 看到该文件。
外部存储会在重新启动时进行扫描,并且可能会定期进行。用户可以通过 SDRescan 等实用程序手动强制扫描。但是,最好的答案是您在关闭文件后使用 MediaScannerConnection 上的 scanFile() 来更新媒体数据库。这将使您的文件立即可供用户使用。