摘要:Android - ExternalStorage
Activity 與 Activity 之間 使用Intent 傳資料,
但Intent只能傳500KB以內的資料
原本我用 Intent 傳圖片串流資料。
但超過了500KB時,就會出錯。
因此重新撰寫,
改使用ExternalStorage。
請自行撰寫
public static String getImageFileDir() {
return Environment.getExternalStorageDirectory().getPath() + "/" + FILE_DIR ;
}
public static String getImageFilePath() {
return getImageFileDir()+ "/" + FILE_NAME;
}
儲存 Image 至ExternalStorage 如下
public static boolean saveAdImage(Bitmap bitmap) {
boolean flag = false;
try {
String path = Environment.getExternalStorageDirectory().getPath();
//取得外部儲存媒體的狀態
String state = Environment.getExternalStorageState();
//判斷狀態
if (Environment.MEDIA_MOUNTED.equals(state)) {
File file = new File(getImageFilePath());
File dir = new File(getImageFileDir());
//先檢查該目錄是否存在
if (!dir.exists()){
//若不存在則建立它
dir.mkdir();
}
if (file.exists()) {
file.delete();
}
//寫檔
FileOutputStream fout = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fout);
fout.flush();
fout.close();
flag = true;
} else {
flag = false;
}
} catch (Exception ex) {
ex.printStackTrace();
flag = false;
}
return flag;
}
取得 ExternalStorage的資料如下
mIvImg = (ImageView)findViewById(R.id.iv_img);
File imgFile = new File(getImageFilePath());
Bitmap bitmap = null;
if(imgFile.exists()) {
bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
mIvImg.setImageBitmap(bitmap);
}