Новый файл изображения из 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>