2011-06-06 14 views
5

cuando veo this page en el navegador web predeterminado de mi dispositivo Android y hago clic en el primer video, activa el reproductor de video predeterminado de mi dispositivo. Carga y juega.WebView ¿NO está abriendo el reproductor de video predeterminado de Android?

Sin embargo, cuando veo el mismo enlace en mi aplicación, usando una vista Web, no abre el reproductor de video predeterminado. ¿Cual podría ser el problema?

Estoy usando el código de la vista web en this link.

También hice la vista web en el modo de pantalla completa al igual que lo que se dijo en el docs, se utiliza este código para ir a pantalla completa:

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

EDIT: Ahora estoy usando el siguiente código, pero todavía no trabajo, alguna idea?

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/"); 

    } 
} 

Respuesta

3

tiene que adjuntar su propio WebViewClient y anular shouldOverrideUrlLoading() si detecta una URL con un vídeo compatible mimeType vuelta verdad y luego poner en marcha la actividad por defecto con la dirección URL. Aquí hay una muestra no probada.

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; 
}}); 

Espero que esto ayude.

+0

Hola @schwiz, muchas gracias por su respuesta, actualicé la pregunta con mi código actualizado y su código de sugerencia. Pero todavía no activa el reproductor multimedia predeterminado de mi dispositivo. ¿Algunas ideas? – Kris

+0

@Kris bien si se está cargando en la misma vista web en lugar de iniciar una actividad o cerrarla forzosamente, entonces la URL no debe terminar con mp4. Establecería un punto de interrupción en shouldOverrideUrlLoading y vería qué está sucediendo ahí. – schwiz

+0

cuando hago clic en la imagen, nada me gusta, no carga o inicia ninguna actividad o cierre forzado. En realidad, el primer video que hago clic en im no usa href, usa la etiqueta html5

2

Si usted está recibiendo una etiqueta html5 vídeo en la continuación, el código anterior WebView (usando WebViewClient) no se llamará, en vez tendrá que manejarlo con WebChromeClient como se muestra en el enlace de abajo

How to play a video in a webview with android?

yo lo he probado y ha funcionado bien :)

el código anterior (usando WebViewClient) sólo es útil cuando tenemos que manejar una solicitud de redirección a otra página a través de usuario haga clic en la etiqueta de anclaje oa través de cualquier hiperenlace en el WebView

Cuestiones relacionadas