Новый файл изображения из URI не существует

Поэтому я использую библиотеку Android Crop ( https://github.com/jdamcd/android-crop), чтобы позволить пользователю сделать снимок, а затем обрезать его.

Мне нужно создать два файла: один, который содержит исходное изображение с камеры, и другой, который содержит обрезанное изображение. Я делаю это, определяя два Файла и два URI, которые затем передаю в библиотеку Android Crop:

// Camera file.
Calendar calendar = Calendar.getInstance();
cameraCaptureFile = new File(getExternalCacheDir(), "camera-capture-" + calendar.getTime().getTime() + ".tmp");
cameraCaptureUri = FileProvider.getUriForFile(this, getPackageName() + ".provider", cameraCaptureFile);
grantUriPermission(getPackageName(), cameraCaptureUri, FLAG_GRANT_WRITE_URI_PERMISSION & FLAG_GRANT_READ_URI_PERMISSION);

// Cropped file.
croppedFile = new File(getExternalCacheDir(), "cropped.png");
croppedFileUri = FileProvider.getUriForFile(this, getPackageName() + ".provider", croppedFile);
grantUriPermission(getPackageName(), croppedFileUri, FLAG_GRANT_WRITE_URI_PERMISSION & FLAG_GRANT_READ_URI_PERMISSION);

// Start cropping library.
Crop.of(cameraCaptureUri, croppedFileUri)

// Cropping complete lets get our cropped file.
File croppedPng = new File(croppedFileUri.getPath());

Проблема в том, что croppedPng.exists() всегда возвращает false; однако, когда я захожу в браузер хранилища устройства и перехожу на Android/data/com.mycompany/cache, исходные и обрезанные файлы находятся там, как и ожидалось.

Я не совсем уверен, что с этим делать, так как мое приложение смогло создать два файла, но тогда оно не может их прочитать? Не имеет смысла.

Просто для завершения вот мои другие конфигурации, связанные с этой проблемой:

provider_paths.xml

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
 <external-path name="external_files" path="." />
</paths>

AndroidManifest.xml

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

0 ответов

Другие вопросы по тегам