2016-09-26 92 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

感谢您的回答,但它仍然不会工作。 –

相关问题