2016-09-26 155 views
5

在仿真器(我用genymotion)它工作正常,但是當我在真實設備上運行它(我的手機是華碩ZenFone激光5.0)拋出一個FileNotFoundException異常FileNotFoundException異常:打開失敗:EACCES(拒絕)

java.io.FileNotFoundException:/storage/emulated/0/cam20160926_075819.jpg:打開失敗:EACCES(拒絕授權)

imgBitmap = MediaStore.Images.Media.getBitmap(CR,selectedImage);

這裏的方法onActivityResult()

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     switch (requestCode){ 
      case CAMERA_REQUEST: 
       if (resultCode == Activity.RESULT_OK){ 
        Uri selectedImage = imageUri; 
        getActivity().getContentResolver().notifyChange(selectedImage, null); 
        ContentResolver cr = getActivity().getContentResolver(); 
        Bitmap imgBitmap; 
        try { 
         imgBitmap = MediaStore.Images.Media.getBitmap(cr, selectedImage); 

         accountPhoto.setImageBitmap(imgBitmap); 
        } catch (IOException e) { 
         e.printStackTrace(); 
         Toast.makeText(getActivity().getApplicationContext(), "Something went wrong while taking a photo", Toast.LENGTH_LONG).show(); 
         Log.e("Camera", e.toString()); 
        } 

       } 
     } 
    } 

我讀到這個EACCES一些相關的問題和解決方案,而且似乎這個問題是在我的權限:

<uses-feature android:name="android.hardware.camera2" android:required="true"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

我錯過什麼?感謝您的回覆

+0

你使用哪個版本的SDK和android? –

+0

我在棉花糖6.0現在api lvl 23.和我的應用程序的最小sdk版本是api lvl 18 –

+0

所以我不能在這裏看到您的權限請求關於讀取和寫入外部存儲? –

回答

1

你有,因爲此權限在棉花糖認爲是危險的請求權限您啓動指令之前:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && 
checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) 
    { 
     requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, RESULT); 
    } 
    else 
    { 
    //your code 
    } 
+0

我把這個放在哪裏? –

+0

你把它放在你的指令之前,使用權限 –

+0

即時使用片段在這件事上,我無法找到初始化RESULT –

0

我懷疑WRITE_EXTERNAL_STORAGE覆蓋READ_EXTERNAL_STORAGE讀取權限。如果你看看documentation,你會發現前者還允許從存儲中讀取數據。

嘗試並移除android:maxSdkVersion屬性,看看是否有效。我懷疑你的設備運行的SDK版本> 18.

退房這個答案的詳細信息:https://stackoverflow.com/a/15270626/425238

+0

感謝您的回答,但它仍然不會工作。 –

相關問題