1. 程式人生 > >Android 通過相簿選擇圖片提示找不到路徑 open failed: EROFS (Read-only file system)

Android 通過相簿選擇圖片提示找不到路徑 open failed: EROFS (Read-only file system)

app中使用者資訊上傳頭像這個挺常見的,一般的都是拍照或選擇圖片上傳。這樣一般會出現三個常見問題。

1.進入照相機或相簿後,如果沒有進行任何操作直接back鍵返回,有可能造成程式崩潰。

其中一種解決辦法就是判斷onActivityResult方法裡的resultCode,經過測試,我發現,只要是正常的返回,resultCode都是-1,如果沒有進行操作的返回,resultCode就會變成0,所以進行以下判斷即可:

if (resultCode == 0){  //拍照或選擇不成功
	return;
}
2.android系統4.4以下和以上(包括4.4)的URI格式有變動,需要進行適配,具體可參考我以前寫的文章:

http://blog.csdn.net/wblyuyang/article/details/45223813

3.進入相簿選擇圖片後可解析出路徑,但是提示說找不到檔案,log輸出為:open failed: EROFS (Read-only file system)

這個跟我的程式操作有關。因為上傳的是使用者頭像,並不需要多麼清晰,如果太清晰的話,上傳時間過長,使用者體驗不好。所以我在上傳前進行了壓縮:

path = BitmapUtils.compressImage(sContext, path, 30);
path就是從uri獲取的路徑,主要問題是在compressImage方法裡,這個方法的思路是從path取的圖片進行壓縮,並存放在path路徑下。這樣就可能出問題,即如果是內部路徑的話,普通程式是沒有許可權進行寫入的,只有讀取的許可權,如果嘗試寫入,就會報上面的錯誤。解決方法也很簡單,只需要把壓縮後的圖片寫入到SD卡里即可,當然,需要在配置檔案裡配置相應的許可權。