Android之掃描檔案或檔案夾

來源:互聯網
上載者:User

標籤:

我們或許經常會遇到這種情況,明明儲存了圖片,但是當你開啟圖片時,卻沒有找到這張圖片,手機重啟之後才能看到。這是因為SD卡並沒有重新掛載,圖庫也無法把這張圖片載入進去,解決這個問題非常簡單,只需要我們類比一個廣播,使SD卡重新掛載即可!

public static void sendBroadCaseRemountSDcard(Activity activity,String filepath) {
try{
if(filepath==null){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Intent mediaScanIntent = new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri contentUri = Uri.fromFile(Environment.getExternalStorageDirectory()); //指定SD卡路徑
mediaScanIntent.setData(contentUri);
activity.sendBroadcast(mediaScanIntent);
}
else {
activity.sendBroadcast(new Intent(
Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
}
}
else{
Uri data = Uri.parse("file://"+filepath);
activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, data));
}

}
catch(Exception ex){
LogUtil.WriteError(ex);
Log.e("sendBroadCaseRemountSDcard",ex.getMessage());
ToastUtil.show(activity, "重新掛載SD卡失敗,請重啟手機查看圖片");
}
}

扯淡,這根本沒用,要重新載入,必須要掃描檔案,要重新掛載檔案夾,也是要遞迴掃描檔案下的所有檔案夾。

實現代碼如下:

    //掃描檔案    public static void fileScan(Activity activity,String file){           Uri data = Uri.parse("file://"+file);           activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, data));       }       //掃描檔案夾    public static void folderScan(Activity activity,String path){           File file = new File(path);           if(file.isDirectory()){               File[] array = file.listFiles();               for(int i=0;i<array.length;i++){                   File f = array[i];                   if(f.isFile()){//FILE TYPE                       String name = f.getName();                   if(name.contains(".mp3")){                       fileScan(activity,f.getAbsolutePath());                   }                   }                   else {//FOLDER TYPE                       folderScan(activity,f.getAbsolutePath());                   }               }           }       }  

 

Android之掃描檔案或檔案夾

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.