У меня есть веб-просмотр в моем приложении, которое при запуске отображает html-страницу. На странице есть гиперссылка, которая на клике должна отображать видео.
Когда я запускаю приложение и нажимаю ссылку на видео гиперссылку, ничего не происходит. Но если я загружаю одну и ту же страницу в браузер Android, тогда она запускает проигрыватель по умолчанию, и все работает нормально.
Я отлаживал его дальше, поместив оператор журнала в метод toOverrideUrlLoading и заметил, что при нажатии гиперссылки его перенаправляют на другую ссылку, а затем на другую ссылку (окончательный URL-адрес для потоковой передачи видео).
Мой вопрос: почему связь прекрасно работает в браузере по умолчанию по умолчанию, а не через веб-просмотр.
благодаря
После объявления вашего WebView
вы должны включить javascript, тогда ваш WebView
будет работать как браузер.
Например:
WebView mwebview = new WebView(this);
setContentView(mwebview);
mwebview.getSettings().setJavaScriptEnabled(true);
или
mwebview.getSettings().setPluginState(PluginState.ON); // this is for newer API's
Что происходит, когда вы нажимаете гиперссылку, эта ссылка, вероятно, имеет некоторые всплывающие окна внутри нее. Вам необходимо определить функцию onCreateWindow в веб-браузере WebChromeClient. Это позволяет обрабатывать вызовы для открытия новых окон или всплывающих окон.
public boolean onCreateWindow (WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
((WebView.WebViewTransport) resultMsg.obj).setWebView(myWebView);
resultMsg.sendToTarget();
return true;
}
В принципе, не ожидайте, что ваш встроенный WebView будет работать так же, как Android-браузер по умолчанию. Браузер по умолчанию построен на одном WebView, но есть много настроек. (Особенно вокруг нестандартного uri, материала HTML5)
Я следил за кодом отсюда: WebView и HTML5 <video>, и я поместил видео ссылку на видео-тег, и я получил видео, играя в моей собственной версии WebView. Поведение немного отличается от браузера по умолчанию. Учитывая больше времени, мы могли бы понять это, посмотрев на его код, но в любом случае...