2016-08-25 8 views
0

これは筆記経路では私の愚かさかもしれませんが、ここにコードがあり、設定済みのルートを見つけることができません。 getUriForFileはエラーを引き起こすものです。Androidで画像を保存して表示しているときにパスの問題が発生する

@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;

Android N以上をターゲットとする最近のアプリでは、file:// URIをパッケージの境界線を超えて渡すと、FileUriExposedExceptionが発生します。したがって、FileProviderを使用してイメージを格納する、より一般的な方法を提示します。

関連する問題