Я хочу воспроизводить локальные видео в веб-браузере. Я получаю видео-путь от намерения, открывающего свою деятельность, поэтому он может храниться внутри или на SD-карте.
Используя этот url file:///storage/emulated/0/Download/movies/movie.mp4
, я получаю Failed to load resource: net::ERR_ACCESS_DENIED
.
Используя диалог ввода файла с URL.createObjectURL(file);
, он работает. Но поскольку я знаю путь, я не хочу его вручную выбирать вручную. Установка значения входного файла запрещена.
Создание URL-адреса, использующего этот путь, также невозможно, потому что ему нужен файл или blob.
Из-за возможного большого размера файла его невозможно временно скопировать на SD-карту.
Это дает мне не найденную ошибку файла:
@Override
public WebResourceResponse shouldInterceptLoadRequest(XWalkView view,
String url) {
if(url.contains("file:///storage")){
try {
return new WebResourceResponse("video/*", "UTF-8", new FileInputStream(url));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
return super.shouldInterceptLoadRequest(view, url);
}
также я определил <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
другие вопросы о stackoverflow, запрашивающие доступ к активам, поэтому я создал этот новый вопрос