Android 保存圖片到系統及相關問題的解決方案

在應用的圖集中,一般會給用戶提供保存圖片的功能,讓用戶能夠將本身喜歡的圖片保存到系統相冊中.java

這個功能其實很好作,系統提供了現成的API:緩存

簡單的來講就這一行代碼:url

 
MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", "");

這個方法的返回值及爲插入圖片的路徑

spa

String url = MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", "");

可是在不少機器(好比G7,G11)上調用以後,進入相冊並看不到剛纔保存的那張圖片,須要將機器重啓後在系統相冊中才會顯示出來,大大影響了用戶體驗code

這是因爲機器系統緩存的問題.須要咱們在插入圖片以後往刷新下相冊環境:orm


這裏有兩種方法:圖片

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

或者:
get

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卡,實際上效率會比較低,也會增長耗電量.
it


上面提到,插入圖片的方法對應的返回值爲圖片保存的絕對路徑. 所以咱們只要獲取該路徑,發送廣播掃描該路徑便可.io

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory()+ picPath)));
相關文章
相關標籤/搜索