Я пытаюсь сделать картинку, а затем открыть ее как изображение в другой деятельности, но я не могу это сделать.
Что работает:
-Открытая камера
- сделать фото и сохранить изображение
Затем, когда я отправляю путь к другому действию, он говорит, что на этом пути ничего нет.
Я использую provider
, потому что иначе это не сработает ...
Это мой провайдер в manifest.xml
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"
tools:replace="android:resource"/>
</provider>
Тогда я фотографирую, используя это:
private void doTakePhotoAction() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
mImageCaptureUri = FileProvider.getUriForFile(TakePictureAndCropActivity.this, BuildConfig.APPLICATION_ID+".provider", new File(Environment.getExternalStorageDirectory(),
"tmp_contact_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
try {
intent.putExtra("return-data", false);
startActivityForResult(intent, PICK_FROM_CAMERA);
} catch (ActivityNotFoundException e) {
e.printStackTrace();
}
}
А потом я отправляю это на мою другую деятельность
Intent intent = new Intent(this, CropImage.class);
intent.putExtra("image-path", mImageCaptureUri.getPath());
intent.putExtra("scale", true);
startActivity(intent);
возвращает "" эти методы
mImagePath = extras.getString("image-path");
mSaveUri = getImageUri(mImagePath);
if( extras.getString( MediaStore.EXTRA_OUTPUT ) != null ) mSaveUri = getImageUri( extras.getString( MediaStore.EXTRA_OUTPUT ) );
mBitmap = getBitmap(mImagePath);
getImageUri - это просто: return Uri.fromFile(new File(path));
и это возвращает меня "file: ///external/tmp_contact_1541377710472.jpg"
А потом я получаю это:
java.io.FileNotFoundException: /external/tmp_contact_1541377710472.jpg (нет такого файла или каталога)
Кстати, provider_paths
содержит это:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external"
path="." />
<external-files-path
name="external_files"
path="." />
<cache-path
name="cache"
path="." />
<external-cache-path
name="external_cache"
path="." />
<files-path
name="files"
path="." />
</paths>