把android手機插上電腦,有的時候會看不到你想看到的檔案,例如:new File産生的檔案,某些軟體下載下傳同步的檔案。
這讓人很惱火,在網上搜尋了一下,有幾個行之有效的方案:
1,重新開機手機----筆者測試通過
2,如果是外置SD卡,在“設定”->"存儲"裡,選擇解除安裝SD卡,然後再挂載----筆者寫這篇文章的時候,還沒有測試,晚上會進行測試并更新測試結果。
3,在“設定”->"存儲"裡,“内部存儲空間”這個欄目裡,有個一個重新整理的按鈕,點選它----筆者測試通過。
4,下載下傳一個軟體SDRescan,在插上電腦之前運作一下----筆者沒有測試,據一些網友回報是可行的,但是目前尚不支援android4.4。
5,如果你是連接配接上之後,所有檔案都看不見了,那麼,你需要檢視所有應用,找到“媒體存儲”這個應用(英文大概叫做MediaStorage,沒有嚴格的求證),檢查是否已經啟用。
然後執行方案3。
有了上述的解決辦法,我們來讨論下這個問題的來龍去脈:
目前大家插上電腦,通常的連接配接方式都是MTP。一般在插上電腦的時候,手機的狀态欄可以供使用者選擇是以MTP(媒體裝置)方式連接配接還是以PTP(相機)。
通常在進行檔案操作的時候,大家會使用MTP,而MTP并非傳統的磁盤模式,因為手機存儲的速度沒有那麼快,是以google對MTP建立了一個緩存。
每次連接配接電腦其實都是讀取的緩存,如果手機上的檔案有更新卻沒有重新整理緩存,就會出問題。
我們目前讨論的就是上面這個現象造成的問題。
Google的一些開發者給出的方案是:在建立檔案的時候,添加一行代碼:
MediaScannerConnection.scanFile(this, new String[] { file.getAbsolutePath() }, null, null);
這個方法會重新整理緩存。參考:https://code.google.com/p/android/issues/detail?id=38282
但是這麼一來,其實是把問題推給了所有的android的應用了:你們的app代碼寫的有問題!
是以大家除了抱怨google之外,能做的就是想辦法來重新整理這個緩存。思路基本上是:
1,緩存是“媒體存儲”這個應用建立的
2,這個應用活着才能正常使用
3,讓他死,再活:a,重新開機,行之有效;b,停止掉再啟動這個應用,無效,沒有觸發重新整理;
4,手動刷:解除安裝裝置再重新挂載,對于外置sd卡是有效的,内置的操作簡單不了,有其他限制。
5,重新整理儲存設備,就是上面提到的方案3.
6,內建刷,做成應用來刷,就是上面提到的方案4;
7,自己來,有些開發者根據問題原理,寫了一個應用,也可以刷,源代碼在:https://github.com/Sarkie/mtpfix
代碼是有效的,但是設計的不太好,可以進行優化,有精力、有條件的朋友可以優化一下。