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


在應用的圖集中,通常會給用戶提供保存圖片的功能,讓用戶可以將自己喜歡的圖片保存到系統相冊中.

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

簡單的來說就這一行代碼:

 

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))); 


 




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM