我使用USB电缆将三星Galaxy Android平板电脑连接到运行Windows 7的计算机。它使用MTP进行连接。用Android平板电脑冲洗MTP连接?
- 第1步。通过Windows资源管理器将我的SQLite数据库从Windows 7复制到平板电脑。
- 第2步。在平板电脑(它添加android_metadata表)上打开它,然后关闭它。
- 第3步。将SQLite数据库复制回Windows。
- 第4步。使用sqlite3.exe检查它。这是腐败。
现在又一次测试。
- 第1步:复制我的SQLite从Windows 7平板电脑通过Windows资源管理器
- 步骤2.断开数据库,然后重新连接USB电缆。
- 第3步。在平板电脑上打开它(添加android_metadata表),然后关闭它。
- 第3步。将SQLite数据库复制回Windows。
- 第4步。使用sqlite3.exe检查它。它不是腐败的。
有趣的是,如果我切换步骤2和3,它也可以。
因为它的工作原理当我断开并重新连接USB电缆,我猜我需要刷新MTP缓存不知何故。这是如何实现的,或者是否有API可以用来快速断开和重新连接设备?
我的实际Windows应用程序使用WPD(Windows便携式设备)API,我只是使用Windows资源管理器进行测试,以证明它在我的Windows代码中不是问题。我没有看到WPD中的任何内容执行刷新。
当Android上的SQLite数据库增长一页(或更多)时,该错误似乎就会发生。 SQLite中的页面大小是512字节。看看SQLite数据库的二进制数据,我可以看到发生了什么。我在设备上使数据库变大一个页面,将数据库从设备上复制下来,拔下USB插头,插入,然后再次复制它。比较这两个文件,关闭usb数据后我得到的文件是相同的,除了最后有更多的数据。这就像MTP不理解该文件是更大的,直到你拔出USB插头并再次插入。如果您将USB插入,则仅复制上次复制文件时存在的字节数。
您是否找到了解决方案?我面临同样的问题,除了Galaxy Nexus,我实际上必须重新启动手机才能刷新。 – Matt 2012-06-25 19:02:12
没有。我们放弃并切换到基于WiFi的连接。 – mhenry1384 2012-06-27 00:05:17
设备上是否存在可能在传输之前,期间或之后锁定或修改文件的进程? – 2015-11-01 14:23:28