2016-08-25 6 views
0

경로 작성시 내 어리 석음이 있지만 여기에 내 코드가 있으며 구성된 루트를 찾지 못했습니다. getUriForFile은 오류를 일으키는 파일입니다.안드로이드에서 이미지를 저장하고 표시하는 동안 경로 문제가 발생했습니다.

@Override 
public void onClick(View v) { 
    if (v.getId() == R.id.main_activity_camera_access_button) { 
     Log.d(TAG, "clicked"); 
     Toast.makeText(getContext(), R.string.first_activity_toast_opening_camera, Toast.LENGTH_SHORT).show(); 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

     if(intent.resolveActivity(getActivity().getPackageManager()) != null) { 
      mPhotoFile = null; 
      try { 
       mPhotoFile = createImageFile(); 
      } catch (IOException ex) { 
       Log.d(TAG, "exception while creating photo file"); 
      } 
      if(mPhotoFile != null){ 
       mfileUri = FileProvider.getUriForFile(getContext(), "edu.lclark.imagineyourwall.fileprovider", mPhotoFile); 
       intent.putExtra(MediaStore.EXTRA_OUTPUT, mfileUri); // set the image file name 

       // start the image capture Intent 
       startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 
      } 
     } 
      //mfileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image 
    } 
} 

나는 res 아래에 xml 디렉토리가 있고 my_paths.xml이 있습니다. 다음은 my_paths.xml의 코드입니다.

또한 내 매니페스트는 최소한 제공자 부분입니다.

<provider 
     android:name="android.support.v4.content.FileProvider" 
     android:authorities="edu.lclark.imagineyourwall.fileprovider" 
     android:exported="false" 
     android:grantUriPermissions="true"> 
     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/my_paths"></meta-data> 
    </provider> 

답변

0

이 권리에 대한 Android 개발자 문서는 다음과 같습니까? Android N (Nougat)을 타겟팅하지 않는 경우 getUriForFile 행을 삭제하고 intent.putExtra(MediaStore.EXTRA_OUTPUT, mfileUri)intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mPhotoFile))으로 수정하는 것이 안전합니다.

Android developer documentation에 따르면; 파일 전달 안드로이드 N 이상을 대상으로 최근 애플 리케이션, 들어

: 패키지 경계를 넘어 // URI는 FileUriExposedException됩니다. 따라서 FileProvider를 사용하여 이미지를 저장하는보다 일반적인 방법을 제시합니다.