Я знаю, что это старенький, но я, кажется, не могу найти способ справиться с этим ...
Я должен захватить изображение с камеры для последующей обработки ввода-вывода, перенести его на общий сетевой ресурс, но перед этим мне многое не удалось ...
после некоторого прочтения я нашел способ сделать это на KitKat, проверяя работающий SDK, и он работает ..
но теперь я также тестирую его на устройстве Nougat.
для нуги я прочитал, что должен использоваться провайдер, и я пытаюсь ...
захваченное изображение ДОЛЖНО храниться в определенной папке, которая является
"/ storage / emulated / 0 / InsulinPower / amSignTool / Data"
для последующей обработки ввода-вывода ... так что я думаю, что-то похожее на
должен быть использован, в настоящее время без взгляда ..
Я посмотрел на определение провайдера для всех «областей», но не могу получить ответ, который мне нужен, и больше я получаю исключения ... как определение URI для получения, я получаю
java.lang.reflect.InvocationTargetException
java.lang.IllegalArgumentException: не удалось найти настроенный корень, который содержит /storage/emulated/0/InsulinPower/amSignTool/Data/XCAMX-201805171828082115829615.jpg
в file_paths я пытался все тихо, как вы можете видеть ... но это работает, только если я ссылаюсь external-path и NOT external-path-files , что действительно кажется будь тем, кто мне нужен .. внешний путь
код тривиален ....
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (cameraIntent.resolveActivity(getPackageManager()) != null) {
File pictureFile = null;
try {
pictureFile = GENERIC.amPictureFile(this);
} catch (IOException ex) {
// Error occurred while creating the File
Toast.makeText(this, "Create file failed!", Toast.LENGTH_SHORT).show();
}
if (pictureFile != null) {
//https://stackoverflow.com/questions/40087944/content-uri-crashes-camera-on-android-kitkat
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT){
this.imageToUploadUri = Uri.fromFile(pictureFile);
} else {
this.imageToUploadUri = FileProvider.getUriForFile(this,"com.insulinpower.android.fileprovider", pictureFile); // <-- THIS statement crashes with the indicated exception
}
//\ https://stackoverflow.com/questions/40087944/content-uri-crashes-camera-on-android-kitkat
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageToUploadUri);
startActivityForResult(cameraIntent, REQUEST_IMAGE_CAPTURE);
}
// file_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Share folder under public external storage folder.The base folder is Environment.getExternalStorageDirectory()-->
<!--external-path name="my_data" path="InsulinPower/amSignTool/Data/" /> -->
<external-files-path name="my_data" path="/InsulinPower/amSignTool/Data/" />
<!-- external-files-path name="my_data" path="InsulinPower/amSignTool/Data/" / -->
<!-- external-files-path name="my_data" path="/" /-->
</paths>
// manifest
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.insulinpower.android.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
File storageDir = новый файл (Environment.getExternalStorageDirectory (), "");
возвращает "/ storage / emulated / 0" // действительный, добавляя суффикс / InsulinPower / amSignTool / Data для перехода в нужную папку ...
Файл file = this.getExternalFilesDir (null);
возвращает "/storage/emulated/0/Android/data/com.insulinpower.amsigntool/files" // недействительно для меня
Любой намек был бы очень признателен, чтобы понять мои ошибки, и, пожалуйста, извините за мой плохой английский.
TIA
Andrea