Android開發刷新相冊問題!!

概要:

雖然已經很晚了但我還是情不自禁的想把剛學到的東西記錄下來……這個bug調了我兩個小時……大家開發過程中有木有遇到要保存一個圖片,然後想在手機相冊裏看到這張圖片卻死活看不到,對!圖片就在那裏,不來不去,相冊就是不知道啊啊啊啊啊!

問題解決

先說一下大體思路,然後上代碼,然後睡覺!!
相信大家已經會了如何將一個圖片存儲到一個位置,但是不知道如何更新相冊
這裏之前有一位大神用的是這樣的方法:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(file.getAbsolutePath())));
對,就是發一個廣播給相冊告訴他我們有新的文件,希望他來更新一下……
但是,我用了這個方法,路徑也沒有問題,他就是死活看不見啊!!!!
然後嘗試換了一種思路,因爲廣播是沒錯的,錯可能錯在路徑!!
於是改成了這樣
Uri localUri = Uri.fromFile(file);

Intent localIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, localUri);

sendBroadcast(localIntent);
然後就成功了耶~~,是的,這次我們傳的是file本身,路徑什麼的讓他自己解析去吧@!

最後貼一下相關代碼,裏面包含了drawable和bitmap轉換等小知識,希望對大家能有幫助,其實還想再寫一個關於popupWindow的,改天吧~

Drawable drawable = imgv_share_QR_code.getDrawable();
BitmapDrawable bmpd = (BitmapDrawable)drawable;
Bitmap bmp = bmpd.getBitmap();
// 首先保存圖片
File appDir = new File(Environment.getExternalStorageDirectory(), "picture");
if (!appDir.exists()) {
    appDir.mkdir();
}
String fileName = System.currentTimeMillis() + ".jpg";
File file = new File(appDir, fileName);
try {
    FileOutputStream fos = new FileOutputStream(file);
    bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
    fos.flush();
    fos.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

// 其次把文件插入到系統圖庫
try {
    MediaStore.Images.Media.insertImage(getContentResolver(),
            file.getAbsolutePath(), fileName, null);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}
// 最後通知圖庫更新
Uri localUri = Uri.fromFile(file);

Intent localIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, localUri);

sendBroadcast(localIntent);
ToastUtils.showMessage(TeamShareActivity.this, "圖片已保存");
popupWindow.dismiss();



最後,大家晚安~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章