Android - ExternalStorage

摘要: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);
        }