2015-10-15 63 views
0

好吧,我真的迷失在這裏:我有一個應用程序應該拍攝一張照片(使用Camera Intent)並將其顯示在圖像視圖中。在Android模擬器中無法讀取圖像

無論我做什麼,我都無法讓它在模擬器中工作,它將圖片正常(在虛擬sd文件夾中檢查它與adb外殼:文件存在),將其保存到虛擬SD卡中。 ,但不能讀取它,才能在ImageView的顯示,它不斷拋出:

W/System.err的:java.io.FileNotFoundException:/storage/0CE8-3A18/pics/IMG_XXXXXXXXXX.jpg:打開失敗:EACCES(權限被拒絕)

奇怪的是,這隻發生在模擬器,當部署在我的手機,它工作得很好(把圖片和顯示在ImageView中)

我使用過Android Studio 1.3.2 Linux Mint的17.2(64位)和我的表現有:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.STORAGE" />

和代碼來檢索保存的圖像並在ImageView上顯示:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) { 
     if (resultCode == RESULT_OK) { 
      // Image captured and saved to fileUri specified in the Intent 
      Bitmap bitmap; 
      try { 
      /************************************************* 
      //THIS IS THE CODE THAT FAILS, ONLY IN EMULATOR 
      ***************************************************/ 
       bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri); 
       bitmap = Bitmap.createScaledBitmap(bitmap, 300, 300, false); 
       showImg.setImageBitmap(bitmap); 
      } catch (FileNotFoundException e) 
      { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } else if (resultCode == RESULT_CANCELED){ 
      // User cancelled the image capture 
      } else { 
      // Image capture failed, advise user } } 
      } 
    } 

我不知道爲什麼會發生這種情況,我認爲它可能與一些模糊的Linux許可規則或類似的東西有關...任何幫助將不勝感激。

回答

0

您可以從MediaStore試試這個,而不是裝載:

bitmap = BitmapFactory.decodeFile(imageUri); showImg.setImageBitmap(bitmap);

+0

嗨L.Swifter,我想: 位= BitmapFactory.decodeFile(imageUri.getPath()); 由於decodeFile接受一個字符串作爲參數,但它仍然拋出相同的錯誤: E/BitmapFactory:無法解碼流:java.io.FileNotFoundException:/存儲器0CE8-3A18/pics/IMG_20151015_235105.jpg:打開失敗:EACCES(權限被拒絕) 我開始認爲Camera Intent可能不會以正確的格式保存它們,或者保存文件時會損壞... 接下來我要嘗試的是將圖像添加到虛擬SD卡,然後嘗試從程序使用相同的代碼加載該圖像,並看看它是怎麼回事。 – melev

+0

我今天試過,你和我的方法都在我的模擬器上工作(android studio 2.1,ubuntu)。很難找到理由,也許最好讓這個問題繼續下去。 –