WebView НЕ открывает андроид по умолчанию видео плеер? - PullRequest
5 голосов
/ 06 июня 2011

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

Однако, когда я просматриваю ту же ссылку в моем приложении, используя WebView, он не открывает видеоплеер по умолчанию. В чем может быть проблема?

Я использую код веб-просмотра в этой ссылке .

Я также сделал веб-просмотр в полноэкранном режиме, как было сказано в документах , для перехода в полноэкранный режим используется этот код:

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

РЕДАКТИРОВАТЬ: я сейчас использую следующий код, но все еще не работает, какие-нибудь идеи?

package com.example.Playmp4OnWebView;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class PlayMp4OnWebView extends Activity {
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);

          requestWindowFeature(Window.FEATURE_NO_TITLE);
          getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

          WebView webview = new WebView(this);
          setContentView(webview);

          WebSettings webSettings = webview.getSettings();
          webSettings.setJavaScriptEnabled(true);
          webSettings.setSupportZoom(false);
          webSettings.setPluginsEnabled(true);
          webSettings.setAllowFileAccess(true);

          webview.setWebViewClient(new WebViewClient(){

              public boolean shouldOverrideUrlLoading(WebView view, String url){
                   if(url.endsWith(".mp4")){
                        Intent i = new Intent(Intent.ACTION_VIEW);
                        i.setData(Uri.parse(url));
                        startActivity(i); //warning no error handling will cause force close if no media player on phone.
                        return true;
                   }
                   else return false; 
              }});

       //This will load the webpage that we want to see
        webview.loadUrl("http://www.broken-links.com/2010/07/30/encoding-video-for-android/");

     }
}

Ответы [ 2 ]

3 голосов
/ 06 июня 2011

Вы должны присоединить свой собственный WebViewClient и переопределить shouldOverrideUrlLoading(), если вы обнаружите URL с поддерживаемым mimetype видео, верните true и затем запустите действие по умолчанию с URL.Вот непроверенный пример.

mWebView.setWebViewClient(new WebViewClient(){

public boolean shouldOverrideUrlLoading(Webview view, String url){
     if(url.endsWith(".mp4") || url.endsWith("some other supported type")){
          Intent i = new Intent(Intent.ACTION_VIEW);
          i.setData(Uri.parse(url));
          startActivity(i); //warning no error handling will cause force close if no media player on phone.
          return true;
     }
     else return false; 
}});

надеюсь, это поможет.

2 голосов
/ 20 июня 2011

Если вы получаете html5 видео-тег в WebView, то приведенный выше код (с использованием WebViewClient) не будет вызываться, вместо этого вам придется обрабатывать его с помощью WebChromeClient, как показано в приведенной ниже ссылке

Как воспроизвести видео в веб-просмотре с помощью Android?

Я опробовал его, и он хорошо работал:)

код выше (с помощью WebViewClient) полезно только тогда, когда нам нужно обработать запрос на перенаправление на другую страницу с помощью щелчка по тегу привязки или любой гиперссылки в WebView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...