Android - webview,禁用或替换youtube视频

时间:2012-10-07 06:16:54

标签: android youtube android-webview youtube-api

我想在WebView上禁用Youtube嵌入式视频,最好使用指向Youtube页面的链接替换它们(单击时会打开浏览器选择器)...

这是我的(非常通用的)webview:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_parodia);

    BlogView = (WebView) findViewById(R.id.blogview);
    BlogView.setWebViewClient(new CustomClient());
    WebSettings webSettings = BlogView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    BlogView.loadUrl("http://test.blogspot.com/?m=1");
}

编辑:this之类的东西正是我正在寻找的,有关如何在android webview上实现它的任何帮助?

1 个答案:

答案 0 :(得分:2)

$(document).ready(function() {
    $('iframe').each(function() {
        var src = $(this).attr('src');
        // Replace youtube vids
        var ytprefix = "http://www.youtube.com/embed/";

        if(src.indexOf(ytprefix) != -1) {
            replaceYT(this, src.substring(ytprefix.length));
        }
    });

    $('object').each(function() {
        var srcel = $('param[name="src"]', this);
        var src = $(srcel).attr('value');
        // Replace youtube vids
        var ytprefix = "http://www.youtube.com/v/";
        if(src.indexOf(ytprefix) != -1) {
            replaceYT(this, src.substring(ytprefix.length));
        }
    });
});

function replaceYT(el, code) {
    if(code.indexOf("/") != -1) {
        code = code.substring(0, code.indexOf("/"));
    }
    if(code.indexOf("?") != -1) {
        code = code.substring(0, code.indexOf("?"));
    }
    var atag = $("<a href='vnd.youtube:" + code +"'><img class='youtubeimg' src='file:///android_asset/youtube-play-button.png' style='background:url(http://img.youtube.com/vi/" + code + "/0.jpg)'/></a>");
    $(el).replaceWith(atag);
}

只需加载jquery和这个脚本。这将使用视频中的屏幕截图和指向youtube的链接替换youtube iframe和object标记。在SE Xperia X10&amp; X测试中测试Nexus 7。

设置您的网络视图以处理youtube,如下所示:     WebViewClient mWebClient = new WebViewClient(){

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith("http://www.youtube.com") || url.startsWith("vnd.youtube")){
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        }
        return false;
    }

};