Android Samsung ACTION_IMAGE_CAPTURE не сохраняет правильное имя файла - PullRequest
0 голосов
/ 04 ноября 2018

После многих часов отладки я не могу сохранить намеренное изображение на телефоне Samsung Android в нужный файл. Вот следующий код (Kotlin):

 val filename=File(getExternalStorageDirectory()?.toString()+"/test.jpg")
 if (filename != null) {
   val takePictureIntent=Intent(MediaStore.ACTION_IMAGE_CAPTURE)
   takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, filename)
   startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
   }

Он всегда будет сохраняться в папке sdcard / DCIM / Camera / 20181104_181922.jpg (т. Е. Дата и время) в имени файла.

Кто-нибудь имеет представление, почему?

Также возвращаемое значение onActivityResult не показывает имя файла, а только "null". Смотрите следующий код: Что я не так сделал?

override fun onActivityResult(requestCode:Int, resultCode:Int, data:Intent?) {
    ...
    val returnedFilename = data?.getData()
    ...
}

1 Ответ

0 голосов
/ 04 ноября 2018

Кто-нибудь имеет представление, почему?

EXTRA_OUTPUT это подсказка, а не команда. В идеале, все приложения камеры должны учитывать это как часть обработки ACTION_IMAGE_CAPTURE. Не требуется, чтобы они это делали, и многие приложения для камер имеют ACTION_IMAGE_CAPTURE реализаций, которых нет.

Также возвращаемое значение onActivityResult не показывает имя файла, а только "null"

ACTION_IMAGE_CAPTURE не задокументировано для возврата от Uri до onActivityResult(). Итак, он должен быть null.

...