解決方案:
1. 重啟手機;
2. 在寫入文件完成的code后面添加:
MediaScannerConnection.scanFile(this, new String[] { file.getAbsolutePath() }, null, null);
3. 每次文件寫入完畢后調用下面的方法:
public static void notifySystemToScan(Context context, String filePath) { Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); File file = new File(filePath); Uri uri = Uri.fromFile(file); intent.setData(uri); context.sendBroadcast(intent); }
Why?
這個問題主要涉及到windows讀取android設備盤符及文件傳輸端口通信的問題。因為系統架構(arm & x86)的差異性,導致無法做到類似於長連接的那種通信機制。總結一句:windows目前還不能實現實時地獲取並展示Android系統分區下的文件。
看到這里依然不太明白,可不可以在通俗一點,答案是當然可以。
目前大家插上電腦,通常的連接方式都是MTP。一般在插上電腦的時候,手機的狀態欄可以供用戶選擇是以MTP(媒體設備)方式連接還是以PTP(相機)。通常在進行文件操作的時候,大家會使用MTP,而MTP並非傳統的磁盤模式,因為手機存儲的速度沒有那么快,所以google對MTP建立了一個緩存。每次連接電腦其實都是讀取的緩存,如果手機上的文件有更新卻沒有刷新緩存,就會出問題。
參考鏈接: