Я беру фотографию с помощью камеры своего устройства с помощью FileProvider, но изображение не сохраняется в каталоге или в любом другом каталоге. Как устранить проблему, чтобы сохранить записанное изображение в каталоге?Невозможно сохранить изображение из каталога с помощью FileProvider
MainActivity.java
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File storageDir = new File(Environment.getExternalStorageDirectory(), "Test-Folder");
if (!storageDir.exists()) {
storageDir.mkdirs();
}
File image = new File(storageDir, "QR_" + timeStamp + ".png");
Uri photoUri = FileProvider.getUriForFile(MainActivity.this, "com.test", image);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
List<ResolveInfo> resInfoList =
getPackageManager()
.queryIntentActivities(cameraIntent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
grantUriPermission(packageName, photoUri,
Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}
startActivityForResult(cameraIntent, 1);
provider_paths.xml
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="Test-Folder/"/>
</paths>
Возможно, приложение камеры на этом конкретном устройстве не поддерживает значения 'content'' Uri'. Например, собственное приложение камеры Google не поддерживало схему контента для видео до этого лета, например. – CommonsWare
'storageDir.mkdirs();'. Вы должны проверить возвращаемое значение, поскольку mkdirs может выйти из строя и затем вернет false. В случае, если это ложное отображение тоста, говорящего пользователю, и верните его. Не продолжайте с остальной частью кода. Бьюсь об заклад, что каталог не создан для начала. – greenapps
@greenapps hey bud, mkdirs возвращает false, потому что я не помещал в файл манифеста права на внешнее хранилище. Благодаря вам! – zbryan