0

我有這樣的代碼來接從畫廊或相機中的圖像:大型圖像意圖外,造成黑色屏幕在Android的

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     switch (requestCode) { 
     case SELECT_PICTURE_ACTIVITY_REQUEST_CODE: 
      if (resultCode == RESULT_OK) { 
       Uri selectedImage = data.getData(); 
       String[] filePathColumn = { MediaStore.Images.Media.DATA, 
         MediaStore.Images.Media.DISPLAY_NAME }; 
       Cursor cursor = getContentResolver().query(selectedImage, 
         filePathColumn, null, null, null); 
       if (cursor.moveToFirst()) { 
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
        String filePath = cursor.getString(columnIndex); 
        ext = filePath 
          .substring(filePath.lastIndexOf(".") + 1); 
        photod = BitmapFactory.decodeFile(filePath); 

        new AsyncTaskOne().execute(new String[] {}); 
    (fileNameIndex); 


       } 
      } 
      break; 

     case SELECT_CAMERA_ACTIVITY_REQUEST_CODE: 
      if (requestCode == CAMERA_REQUEST) { 
       photod = (Bitmap) data.getExtras().get("data"); 
       new AsyncTaskOne().execute(new String[] {}); 
      } 
     } 
    } 

當我按下確認按鈕,我調用這個監聽

OnClickListener confirm = new OnClickListener() { 
     public void onClick(View v) { 
      Intent i = new Intent("com.striget.eu.UpdatePhoto"); 
      i.putExtra(PropertiesUpdatedPhoto.EXTRA_PHOTO, codedPhoto); 
      i.putExtra(PropertiesUpdatedPhoto.EXTRA_EXT, ext); 
      startActivity(i); 
     } 
    }; 

(其中codedPhoto是圖像通過另一種方法以base64編碼) 發送圖像和其延伸在另一活動

一切工作正常與小圖像但如果我選擇了一箇中等大小的圖像或大照片(如果不是很大),應用程序凍結,屏幕變成黑色,如果我等待幾分鐘返回當前活動沒有顯示堆棧中的任何錯誤和被調用的意圖PropertiesUpdatedPhoto not start。

我該如何解決這個問題?

回答

1

這個問題是討論here,我們應該保持意圖額外的內容儘可能小。

我的建議是,而不是傳遞圖像,也許傳遞圖像的URI或路徑將是一個更好的解決方案。然後只加載該活動中的圖像。

實施例:需要

OnClickListener confirm = new OnClickListener() { 
    public void onClick(View v) { 
     Intent i = new Intent("com.striget.eu.UpdatePhoto"); 
     i.setData(PropertiesUpdatedPhoto.EXTRA_PHOTO, # Image URI Here #); 
     // Or i.putExtra(PropertiesUpdatePhoto.EXTRA_PHOTO, # Image Path Here #); 
     i.putExtra(PropertiesUpdatedPhoto.EXTRA_EXT, ext); 
     startActivity(i); 
    } 
}; 
+0

圖像,我必須傳遞給其他的活動在當前活動編碼。 因此:如何將編碼圖像存儲在臨時文件中以僅傳遞路徑? – AndreaF 2012-07-29 17:19:55

+0

按照你的建議是的將編碼圖像存儲在臨時文件中並獲取臨時文件路徑並將其傳遞給新的活動。只是好奇爲什麼圖像需要編碼? – NcJie 2012-07-29 17:28:53

+0

我必須將圖像嵌入JSON中以將其發送到Web服務。 – AndreaF 2012-07-29 17:39:50