Перенаправление URL веб-просмотра Android

1

У меня есть веб-просмотр в моем приложении, которое при запуске отображает html-страницу. На странице есть гиперссылка, которая на клике должна отображать видео.

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

Я отлаживал его дальше, поместив оператор журнала в метод toOverrideUrlLoading и заметил, что при нажатии гиперссылки его перенаправляют на другую ссылку, а затем на другую ссылку (окончательный URL-адрес для потоковой передачи видео).

Мой вопрос: почему связь прекрасно работает в браузере по умолчанию по умолчанию, а не через веб-просмотр.

благодаря

  • 0
    Вы уверены, что это проблема перенаправления? Я думаю, что WebView действительно обрабатывает перенаправление http. На самом деле вы получите обратный вызов, если будет слишком много перенаправлений: developer.android.com/reference/android/webkit/… , android.os.Message, android.os.Message).
  • 0
    какое видео вы пытаетесь воспроизвести? это видео тег? или это прямая ссылка на видеофайл? Эти два случая обрабатываются по-разному. Встроенный WebView не будет работать для видео тега из коробки.
Показать ещё 6 комментариев
Теги:
android-webview

3 ответа

1

После объявления вашего 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
1

Что происходит, когда вы нажимаете гиперссылку, эта ссылка, вероятно, имеет некоторые всплывающие окна внутри нее. Вам необходимо определить функцию onCreateWindow в веб-браузере WebChromeClient. Это позволяет обрабатывать вызовы для открытия новых окон или всплывающих окон.

public boolean onCreateWindow (WebView view, boolean dialog, boolean userGesture, Message resultMsg) {

    ((WebView.WebViewTransport) resultMsg.obj).setWebView(myWebView);
    resultMsg.sendToTarget(); 
    return true;
}
0

В принципе, не ожидайте, что ваш встроенный WebView будет работать так же, как Android-браузер по умолчанию. Браузер по умолчанию построен на одном WebView, но есть много настроек. (Особенно вокруг нестандартного uri, материала HTML5)

Я следил за кодом отсюда: WebView и HTML5 <video>, и я поместил видео ссылку на видео-тег, и я получил видео, играя в моей собственной версии WebView. Поведение немного отличается от браузера по умолчанию. Учитывая больше времени, мы могли бы понять это, посмотрев на его код, но в любом случае...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню