Эта ошибка произошла, когда я обновил SDK с 23 до 26 в моем AndroidManifest.xml и сборке Gradle.Возможно, это связано с ошибкой Uri.fromFile (), вызванной использованием внешних приложений через намерение (например, передачу файла в камеру), но источник в SDK, похоже, этого не делает.
Вызов выглядит так, и путь правильный:
Bitmap captured = ThumbnailUtils.createVideoThumbnail(videoSourcePath,MediaStore.Images.Thumbnails.FULL_SCREEN_KIND);
Я проверил, что файл существует и что AndroidManifest.xml имеет разрешения для внешнего хранилища:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Есть что-тоизменился между SDK 23 и 26, о котором я не знаю в отношении захвата растрового изображения из файла MP4?
ОБНОВЛЕНИЕ
Таким образом, настоящей проблемой оказался путь к изображению.Похоже на SDK 26, когда вы получаете данные, возвращенные из намерения (в данном случае захвата видео), если вы используете следующий вызов:
videoSourcePath = data.getData().getPath();
Он больше не будет корректно возвращать физическое местоположение видео, но привязывает к "external_files", которые сделали путь недействительным.
То, что когда-то было возвращено, было:
/storage/emulated/0/myapp/mycustomer/newvideofile.mp4
Сейчас:
/external_files/myapp/mycustomer/newvideofile.mp4
В итоге я использовал только исходный источник, который я отправил, а не полагался на то, чтоНамерение возвращается.