Я нашел способы, которые предположительно работали для людей, чтобы получить URI / растровое изображение снятого камерой изображения.
Но когда я пытаюсь создать растровое изображение из ненулевого URI, который я получаю, файл не создается и не существует.
это функция, которую я использую для открытия цели камеры (которая копируется из stackoverflow):
private void openBackCamera() {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = timeStamp + ".jpg";
File storageDir = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
currentImageBase64 = storageDir.getAbsolutePath() + "/" + imageFileName;
File file = new File(currentImageBase64);
Log.d("2","file 1: " +file.exists());
Uri outputFileUri = FileProvider.getUriForFile(getApplicationContext(),"com.mydomain.fileprovider",file);
currentImageBase64 =outputFileUri+"";
Log.d("2",outputFileUri+" is the uri got from camera");
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
и вот как я делаю свои изображения:
Log.d("2","camera request!"+ currentImageBase64);
File imgFile = new File(currentImageBase64);
if(imgFile.exists()) {
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ivPreview.setImageBitmap(myBitmap);
}else{
Log.d("2","file does not exist");
}
обратите внимание, что журнал запросов камеры показывает, что currentImagesBase64 не является нулевым и имеет значение "content: //com.mydomain.fileprovider/name/Pictures/20190121_173332.jpg"
файл в любом случае не существует.
/ **
редактировать: проблема была в недостаточных разрешениях, были запрошены разрешения для камеры и чтения и записи, и проблема была решена!
** /