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

來源:互聯網
上載者:User

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

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

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

 

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

MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", "");
這個方法的傳回值及為插入圖片的路徑
[java]  String url = MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", "");  

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

但是在很多機器(比如G7,G11)上調用之後,進入相簿並看不到剛才儲存的那張圖片,需要將機器重啟後在系統相簿中才會顯示出來,大大影響了使用者體驗

這是由於機器系統緩衝的問題.需要我們在插入圖片之後往重新整理下相簿環境:


這裡有兩種方法:


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

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


[java]
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(); 

});  

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


上面提到,插入圖片的方法對應的傳回值為圖片儲存的絕對路徑. 因此我們只要擷取該路徑,發送廣播掃描該路徑即可.


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

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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.