Я получаю эту речь сообщения, которая не найдена (Нет такого файла или каталога)

Я получаю это сообщение о том, что не нашел (Нет такого файла или каталога), путь правильный, что может быть не так?

W/System.err: java.io.FileNotFoundException: /map.app.fileprovider/files/Pictures/JPEG_20190507_180502_4494360846236185755.jpg (No such file or directory)

ЖУРНАЛ

   W/System.err: java.io.FileNotFoundException: /map.app.fileprovider/files/Pictures/JPEG_20190507_180502_4494360846236185755.jpg (No such file or directory)
    W/System.err:     at java.io.FileInputStream.open0(Native Method)
            at java.io.FileInputStream.open(FileInputStream.java:200)
    W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:150)
            at java.io.FileInputStream.<init>(FileInputStream.java:103)
    W/System.err:     at android.content.ContentResolver.openInputStream(ContentResolver.java:965)
            at android.provider.MediaStore$Images$Media.getBitmap(MediaStore.java:888)
    W/System.err:     at map.app.fragments.ReportFragment.onActivityResult(ReportFragment.kt:274)

Ошибка строки ReportFragmnet 274

val bitmap = MediaStore.Images.Media.getBitmap(context.contentResolver, Uri.parse("file://"+this.imageUri!!)) as Bitmap

дорожка

<?xml version = "1.0" encoding = "utf-8"?>
<paths>
    <external-files-path

        name = "files"
        path = "."/>
</paths>

манифест

  <provider
            android:name = "android.support.v4.content.FileProvider"
            android:authorities = "${applicationId}.fileprovider"
            android:exported = "false"
            android:grantUriPermissions = "true">
            <meta-data
                android:name = "android.support.FILE_PROVIDER_PATHS"
                android:resource = "@xml/paths" />
        </provider>

способ захвата изображения галереи

 fun openCamera() {
    try {
        val imageFile = createImageFile()
        val callCameraIntent =  Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        if (callCameraIntent.resolveActivity(activity.packageManager) != null) {
            val authorities = activity.packageName + ".fileprovider"
            this.imageUri = FileProvider.getUriForFile(context, authorities, imageFile)
            callCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri)
            startActivityForResult(callCameraIntent, IMAGE_PICK_CODE)
        }
    } catch (e: IOException) {
        Toast.makeText(context, "Could not create file!", Toast.LENGTH_SHORT).show()
    }
}

onActivityResult

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == IMAGE_PICK_CODE && resultCode == RESULT_OK) {


            try {

                //Getting the Bitmap from Gallery
                val bitmap = MediaStore.Images.Media.getBitmap(context.contentResolver, Uri.parse("file://"+this.imageUri!!)) as Bitmap
                this.imgThumb!!.setImageBitmap(bitmap)
                this.pictureTaken = true
            } catch (e:IOException) {
                e.printStackTrace()
            }
        } else {
            Toast.makeText(context, "Error loading image", Toast.LENGTH_LONG)
        }
    }

    @Throws(IOException::class)
    fun createImageFile(): File {
        val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())
        val imageFileName: String = "JPEG_" + timeStamp + "_"
        val storageDir: File = activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
        if (!storageDir.exists()) storageDir.mkdirs()
        val imageFile = File.createTempFile(imageFileName, ".jpg", storageDir)
        imageFilePath = imageFile.absolutePath
        return imageFile
    }
1
0
91
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как указывает исключение, путь не существует!!

В качестве небольшого совета, старайтесь не бороться с исключениями, просто следуйте им, даже если вы почти уверены!

Во всяком случае, на этот раз это

val authorities = activity.packageName + ".fileprovider"

часть виновата, потому что вы определили поставщика в манифесте с суффиксом .provider.

Итак, измените на:

val authorities = activity.packageName + ".provider"

Это должно работать с этим изменением.

Ваше здоровье!

о, хорошо, изменение в манифесте, появляется изображение по умолчанию для загрузки одного вопроса: /

Davi 08.05.2019 08:55

Пожалуйста, не исправляйте свои коды в вопросе. Это сбивает с толку людей, которые приходят на этот пост со своими проблемами!

madz 08.05.2019 11:57

Извините, я не понял смысла вашего комментария

madz 08.05.2019 11:58

хорошо, это работает, но загружает миниатюру по умолчанию, а не выбранное изображение, что может быть неправильным. Жаль, что я был без интернета.

Davi 15.05.2019 17:58

@Davi Трудно догадаться, каковы твои настоящие намерения. То, что вы спрашиваете, является предметом другого вопроса с более соответствующими данными. Я думаю, что на этот вопрос уже был дан ответ.

madz 18.05.2019 00:50

Другие вопросы по теме