我使用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