>

이미지를 내부 저장소에 저장하려고하는데 직면하고 있습니다 :

java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com.example.example/app_images/f9732a4a-a22e-4b62-b9b3-e546c8edc93c.jpg.
       at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:711)
       at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:400)
       at com.example.example.fragments.PhotosFragment.createImageFile(PhotosFragment.java:182)
       at com.example.example.fragments.PhotosFragment.dispatchTakePictureIntent(PhotosFragment.java:191)

자바 코드 :

private File createImageFile() throws IOException {
    ContextWrapper cw = new ContextWrapper(getActivity());
    // path to /data/data/yourapp/app_data/imageDir
    File directory = cw.getDir("images", Context.MODE_PRIVATE);
    if(!directory.exists())
        directory.mkdirs();
    // Create imageDir
    File mypath = new File(directory,UUID.randomUUID().toString() +".jpg");
    if(!mypath.exists())
        mypath.createNewFile();
    Uri photoURI = FileProvider.getUriForFile(getActivity(), BuildConfig.APPLICATION_ID + ".provider",mypath);
    return mypath;
}
private void dispatchTakePictureIntent() throws IOException {
    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    // Create the File where the photo should go
    File photoFile = null;
    try {
        photoFile = createImageFile();
    } catch (IOException ex) {
        // Error occurred while creating the File
        return;
    }
    // Continue only if the File was successfully created
    if (photoFile != null) {
        Uri photoURI = FileProvider.getUriForFile(getActivity(), BuildConfig.APPLICATION_ID + ".provider",createImageFile());
        mCurrentPhotoPath = "file:" + photoFile.getAbsolutePath();
        cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
        startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
    }
}    

내 경로 코드 :

 <files-path name="my_images" path="app_images/"/>

내 매니페스트 코드 :

         <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.example.example.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths"/>
    </provider>

이것에 대한 단서가 있습니까?

  • 답변 # 1

    개인 디렉토리 cw.getDir("images", Context.MODE_PRIVATE); 에 파일이 저장되었습니다. 문서에 설명 된 다른 솔루션을 선택하십시오

관련 자료

  • 이전 AES 암호화에 PHP와 해독에 펄
  • 다음 node.js - URLSearchParams가 Angular의 get/post에서 노드 서버에 비어 있습니다