来自URI的新图像文件不存在

时间:2017-09-17 06:38:49

标签: android android-camera android-fileprovider android-crop

所以我正在使用Android裁剪库(https://github.com/jdamcd/android-crop)允许用户拍照然后裁剪。

我需要创建两个文件:一个包含来自摄像头的原始图像,另一个包含裁剪的图像。我这样做是通过定义两个文件和两个URI然后传递到Android裁剪库:

// 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 个答案:

没有答案