【问题标题】:How to open video player in WebView?如何在 WebView 中打开视频播放器?
【发布时间】:2011-06-16 04:12:35
【问题描述】:

我有一个使用 Webview 显示的 WebApp。在这些页面中,我有一些视频链接(MP4、3GP...)。

当我点击链接时,什么也没有发生。?

public class luxgateway extends Activity {

WebView myWebView;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);     

    myWebView = (WebView) findViewById(R.id.webview);
    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.getSettings().setAllowFileAccess(true); 

    WebViewClient webViewClient = new MyWebViewClient();
    myWebView.setWebViewClient(webViewClient);

    myWebView.loadUrl("http://www.example.com/demo.html");
}

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
        myWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

private class MyWebViewClient extends WebViewClient {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.endsWith(".3gp")) {
            Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));
            view.getContext().startActivity(intent);    
            return true;
        } else {
            return super.shouldOverrideUrlLoading(view, url);
        }
    }
}

我在这台服务器上的这段代码中找到了一些部分,但它对我没有帮助”

        if (url.endsWith(".3gp")) {
            Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));
            view.getContext().startActivity(intent);    
            return true;
        } else {
            return super.shouldOverrideUrlLoading(view, url);
        }

在这种情况下,我仅限于 3GP 文件,但我不知道将在 WEB 站点上放置哪个扩展名。

我已经在测试中尝试了这段代码,只是为了看看视频是否可以播放(或者视频播放器只用这段代码开始

                Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));
            view.getContext().startActivity(intent);    
            return true;

在这种情况下,仅下载视频。我希望将示例交互作为网络浏览器。当我点击视频链接时,浏览器会询问我想使用哪个播放器播放此视频。

【问题讨论】:

    标签: android video webview android-video-player


    【解决方案1】:

    如果你指定 uri 包含视频,你可能会有更好的运气:

    Intent intent = new Intent(Intent.ACTION_VIEW) //I encourage using this instead of specifying the string "android.intent.action.VIEW"
    intent.setDataAndType(Uri.parse(url), "video/3gpp");
    view.getContext().startActivity(intent);  
    

    由于我们没有指定具体的包来处理上述意图,所以称为隐式意图。对于隐式意图,如果有多个包处理您指定的内容类型,您将被要求在它们之间进行选择。这应该会给你你想要的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多