2012-10-24 154 views
2

我的應用程序涉及從設備的圖庫中選擇圖像,然後將該圖像的較小版本保存到SD卡上的文件夾。我遇到的問題是有些用戶報告說圖像沒有保存到文件夾中。然而,大多數用戶報告說,該應用程序工作正常,我不能告訴這些其他幾個用戶正在發生什麼。到目前爲止,據報道這些問題的設備如下:華爲T-Mobile myTouch,三星GT-S5830i,HTC Evo 4G和三星Galaxy S2。我自己有一個摩托羅拉Atrix 2,我沒有這樣的問題。將圖像保存到所有設備上的SD卡

我的清單已經有標籤了。我的大部分代碼都來自其他的stackoverflow解決方案,從圖庫中獲取圖像,然後將其保存到SD卡。

從庫獲取圖像:

public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) 
    { 
     switch(requestCode) 
     { 
      case SELECT_IMAGE: 
       image_dir = getPath(data.getData()); 

       Bitmap myBitmap = decodeFile(new File(image_dir)); 

       resizedBitmap = Bitmap.createScaledBitmap(myBitmap, (int)(myBitmap.getWidth()/2), (int)(myBitmap.getHeight()/2), true); 
       break; 
     } 
    } 
    else 
    { 
     image_dir = "None"; 
    } 
} 

將圖像保存到SD卡:

OutputStream fOut = null; 
File file = new File(Environment.getExternalStorageDirectory()+"/MyApp",imgname+".jpg"); 
fOut = new FileOutputStream(file); 

resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut); 
fOut.flush(); 
fOut.close(); 

而這一切似乎迎刃而解對於大多數用戶,但對於一些用戶的圖像ISN沒有得救。這可能是一個權限問題或某種我在代碼本身忽略的設置?任何幫助表示讚賞。根據this

回答

0

This directory may not currently be accessible if it has been mounted by the user on their computer, has been removed from the device, or some other problem has happened 

Environment.getExternalStorageDirectory()將返回null,所以你應該檢查Environment.getExternalStorageState()第一。

0

原因可能是這些設備不使用流行的外部存儲約定/ mnt/sdcard /。以下是Samsung Galaxy S2HTC Evo 4G的一些提示。問題可能不是SD沒有安裝,但你應該按照jaredzhang的建議定義運行該檢查。 我也建議聽最可能的錯誤並報告它們 - 例如,檢查SD是否已安裝,目標文件夾是否存在等等。不用說,最好是將手放在其中一臺設備上並檢查爲自己。也許你也可以在線搜索這些設備的getExternalStorageDirectory()的結果是什麼。