在我的应用程序中操作文件时,我遇到了文件损坏的问题。见这里和这里。看起来好像 FileOutputStream 没有正确关闭,但我几乎 100% 确定此时此问题不是我的代码或我正在使用的库。流正在被正确地刷新和关闭。
我已经设法确定只有当我的手机作为媒体设备连接并且 Windows 可以访问 sdcard 时才会出现问题(没有抛出异常并且一切似乎都正常工作但输出文件已损坏,缺少几个字节 - 结束文件信息)。关闭 USB 调试并不能修复它。将手机与计算机断开连接,然后运行应用程序即可解决此问题。
我的问题是,如何以编程方式实现相同的修复?我努力了:
this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_UNMOUNTED, Uri
.parse("file://")));
和
this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SHARED, Uri
.parse("file://")));
这似乎没有任何影响,文件仍然损坏。我已经用 Google 搜索了,但没有找到我需要做的事情。
如果做不到这一点,我可以检查什么来警告用户先断开设备?
这个特殊的设备没有真正的可移动 sdcard,它是一个 Htc One GPE。