首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在webview上播放视频

如何在webview上播放视频
EN

Stack Overflow用户
提问于 2013-06-13 15:40:56
回答 2查看 385关注 0票数 2

在bleacher report应用程序上,他们有一个WebView,里面有Youtube视频。当您按全屏图标时,视频将在全屏上播放。我该怎么做呢?是服务器端的问题还是android的问题?我只想补充一点,即使这是一个youtube视频,你看到的播放器也不是youtube播放器,而是另一个播放器。

编辑: youtube是一个组件,是url页面。这不是一个youtube的网页,所以我不能使用"shouldOveriteUrl",而且,我说的不仅仅是youtube视频,我说的是任何视频组件。我可以在我的服务器上做一些事情,比如用另一个播放器包装视频组件吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-06-13 15:46:02

//尝试这个将支付Youtube视频的示例活动

代码语言:javascript
代码运行次数:0
运行
复制
public class MyWebViewClient extends WebViewClient {

public Activity mActivity;

public MyWebViewClient(Activity activity,) {
    super();
    mActivity = activity;
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Uri uri = Uri.parse(url);
    if (uri.getHost().contains("youtube.com")) {
        IntentUtils.viewYoutube(mActivity, url);
        return true;
    }

    return false;
}

public static void viewYoutube(Context context, String url) {
    IntentUtils.viewWithPackageName(context, url, "com.google.android.youtube");
}

public static void viewWithPackageName(Context context, String url, String packageName) {
    try {
        Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        if (isAppInstalled(context, packageName)) {
            viewIntent.setPackage(packageName);
        }
        context.startActivity(viewIntent);
    } catch (Exception e) {
        Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        context.startActivity(viewIntent);
    }
}

public static boolean isAppInstalled(Context context, String packageName) {
    PackageManager packageManager = context.getPackageManager();
    try {
        packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
        return true;
    } catch (NameNotFoundException e) {
    }
    return false;
}

@Override
public void onPageFinished(final WebView view, String url) {
    String javascript = "javascript:" +
        "var iframes = document.getElementsByTagName('iframe');" +
        "for (var i = 0, l = iframes.length; i < l; i++) {" +
        "   var iframe = iframes[i]," +
        "   a = document.createElement('a');" +
        "   a.setAttribute('href', iframe.src);" +
        "   d = document.createElement('div');" +
        "   d.style.width = iframe.offsetWidth + 'px';" +
        "   d.style.height = iframe.offsetHeight + 'px';" +
        "   d.style.top = iframe.offsetTop + 'px';" +
        "   d.style.left = iframe.offsetLeft + 'px';" +
        "   d.style.position = 'absolute';" +
        "   d.style.opacity = '0';" +
        "   d.style.filter = 'alpha(opacity=0)';" +
        "   d.style.background = 'black';" +
        "   a.appendChild(d);" +
        "   iframe.offsetParent.appendChild(a);" +
        "}";
    view.loadUrl(javascript);

    super.onPageFinished(view, url);
}
票数 1
EN

Stack Overflow用户

发布于 2013-06-13 15:48:09

如果你想让视频在webview上运行,而不使用Android中的应用程序,它必须有服务器端的视频播放器。

默认情况下,Webview不允许使用Javascript,这很可能是您的视频播放器在网站上使用的脚本。你很可能需要告诉你的Webview使用Javascript,以便它至少尝试播放视频(我说尝试,因为我自己从来没有这样做过,我通常使用播放器活动来播放视频)。

因此,通过引用您的活动webview对象,您可以执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
browser = (WebView) findViewById(R.id.webbrowser_wvViewer);    
browser.getSettings().setJavaScriptEnabled(true);

希望这对你有帮助..:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17081719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档