Изменение активности (контекста) влияет на разрешение доступа для получения URI? ⇐ Android
-
Anonymous
Изменение активности (контекста) влияет на разрешение доступа для получения URI?
Я пытаюсь получить файл из «меню общего доступа» вне моего приложения и затем обработать его. Я получаю Uri и преобразую его в fileDescriptor, помещаю его в статическую переменную и затем использую эту переменную в другом действии. Проблема в том, что при первом действии все работает хорошо (например, получение миниатюры с помощью MetaDataRetriever), но в следующем действии и с тем же методом выдается ошибка java.lang.RuntimeException: setDataSource error: status = 0x80000000. То же самое происходит, если я использую URI напрямую. Я знаю, что могу делать все одно и то же действие, но предпочитаю делать это разными действиями.
`public static Bitmap videoThumbMini(дескриптор FileDescriptor) { Растровое изображение растровое = ноль;
MediaMetadataRetriever извлекатель = новый MediaMetadataRetriever(); пытаться { ретривер.setDataSource(дескриптор); растровое изображение = ретривер.getFrameAtTime(1000); если (растровое изображение == ноль) вернуть ноль; плавающий коэффициент = 1; если (bitmap.getHeight() > 300) соотношение = bitmap.getHeight()/300f; растровое изображение = Bitmap.createScaledBitmap(растровое изображение, (int) (bitmap.getWidth() / соотношение), 200, false); } catch (RuntimeException e) { Logger.log(e.getMessage() + «ERR3», false, e); } окончательно { пытаться { ретривер.релиз(); } catch (Исключение е) { Logger.log(e.getMessage() + «ERR4», false, e); } } вернуть растровое изображение; }`
Я пытаюсь получить файл из «меню общего доступа» вне моего приложения и затем обработать его. Я получаю Uri и преобразую его в fileDescriptor, помещаю его в статическую переменную и затем использую эту переменную в другом действии. Проблема в том, что при первом действии все работает хорошо (например, получение миниатюры с помощью MetaDataRetriever), но в следующем действии и с тем же методом выдается ошибка java.lang.RuntimeException: setDataSource error: status = 0x80000000. То же самое происходит, если я использую URI напрямую. Я знаю, что могу делать все одно и то же действие, но предпочитаю делать это разными действиями.
`public static Bitmap videoThumbMini(дескриптор FileDescriptor) { Растровое изображение растровое = ноль;
MediaMetadataRetriever извлекатель = новый MediaMetadataRetriever(); пытаться { ретривер.setDataSource(дескриптор); растровое изображение = ретривер.getFrameAtTime(1000); если (растровое изображение == ноль) вернуть ноль; плавающий коэффициент = 1; если (bitmap.getHeight() > 300) соотношение = bitmap.getHeight()/300f; растровое изображение = Bitmap.createScaledBitmap(растровое изображение, (int) (bitmap.getWidth() / соотношение), 200, false); } catch (RuntimeException e) { Logger.log(e.getMessage() + «ERR3», false, e); } окончательно { пытаться { ретривер.релиз(); } catch (Исключение е) { Logger.log(e.getMessage() + «ERR4», false, e); } } вернуть растровое изображение; }`
Мобильная версия