1

WebViewでYoutube埋め込みビデオを無効にしたいのですが、できればYoutubeページへのリンクに置き換えてください(クリックするとブラウザピッカーが開きます)...

これは私の(かなり一般的な)Webビューです:

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

編集:このようなものは私が探しているものです、AndroidのWebビューにそれを実装する方法についての助けはありますか?

4

1 に答える 1

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のiframeとオブジェクトタグがビデオのスクリーンショットとYouTubeへのリンクに置き換えられます。SEXperiaX10およびNexus7でテスト済み。

次のようにYouTubeを処理するようにWebビューを設定します。WebViewClientmWebClient=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;
    }

};
于 2012-10-18T10:19:36.670 に答える