MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", "");
String url = MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", "");
但是在很多機器(比如G7,G11)上調用之后手機照片顯示無法生成縮略圖,進入相冊并看不到剛才保存的那張圖片,需要將機器重啟后在系統相冊中才會顯示出來,大大影響了用戶體驗
這是由于機器系統緩存的問題.需要我們在插入圖片之后往刷新下相冊環境:
這里有兩種方法:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
或者:
final MediaScannerConnection msc = new MediaScannerConnection(mContext, new MediaScannerConnectionClient() {
public void onMediaScannerConnected() {
msc.scanFile("/sdcard/image.jpg", "image/jpeg");
}
public void onScanCompleted(String path, Uri uri) {
msc.disconnect();
}
});
這里要注意的是,發送廣播或者直接調用掃描整個SD卡,實際上效率會比較低,也會增加耗電量.
上面提到,插入圖片的方法對應的返回值為圖片保存的絕對路徑. 因此我們只要獲取該路徑,發送廣播掃描該路徑即可.
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory()+ picPath)));