android - 自定义 Android WebView 以在内部打开除 YouTube 链接之外的所有链接

标签 android webview youtube

我有一个 WebView 应用程序,我希望它的行为如下:

用户可以点击任何链接并在同一个 WebView 中打开新页面,除非目标是 YouTube,在这种情况下我想要两种可能的情况:

  • 打开 YouTube 安卓应用观看视频
  • 打开标准浏览器查看视频。

  • 我的主要 Activity 如下:
    package com.prgguru.android;
    import android.os.Bundle;
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.webkit.WebView;
    
    
    @SuppressLint("SetJavaScriptEnabled")
    public class MainActivity extends Activity {
         WebView browser;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            browser=(WebView)findViewById(R.id.webkit);     
            browser.getSettings().setJavaScriptEnabled(true);
            browser.getSettings().setDefaultFontSize(20);
            browser.loadUrl("http://exo-agency.com/funnytube/");   
        }
    }
    

    提前致谢。

    最佳答案

    user2180451 回答:

    我刚刚编辑为答案:

    终于解决了这个问题。

    对于任何有这个问题的人来说,我是如何让它工作的

    在这里,我留下一个模板主要 Activity 放入 src > MainActivity.java
    用你的网址填充它

    /** YOUR PACKACGE NAME SHOULD GO HERE **/
    
    import android.app.Activity;
    import android.net.Uri;
    import android.os.Bundle;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.content.Intent;
    import android.net.Uri;
    
    public class MainActivity extends Activity {
        /** Called when the activity is first created. */
         @ Override
    
         public void onCreate (Bundle savedInstanceState) {
             super. onCreate (savedInstanceState);
             setContentView (R.layout.main);
    
             WebView web = (WebView) findViewById (R.id.webView);
             web.getSettings().setJavaScriptEnabled (true);
             web.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
             web.getSettings().setPluginsEnabled (true);
             web.getSettings().setSupportMultipleWindows (false);
             web.getSettings().setSupportZoom (false);
             web.setVerticalScrollBarEnabled (false);
             web.setHorizontalScrollBarEnabled (false);
    
             web.loadUrl ("THE URL TO YOUR WEBVIEW SITE SHOULD GO HERE");
    
             web.setWebViewClient(new WebViewClient () {
                 @ Override public boolean shouldOverrideUrlLoading(WebView view, String url) {
                 if (url.startsWith("vnd.youtube")){
                     startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                     return true;
                 }
                 else {
                     return false;
                 }
                 }
             });
         }
    
     }
    

    之后,在您的实际网页 HTML 网络应用程序中,您可以调用 YouTube 应用程序来播放带有此条目的视频
    <a href="vnd.youtube://VIDEOID">WATCH ME</a>
    

    只需将 VIDEOID 替换为您要观看的视频的实际视频 ID,当您单击它时,它将启动包含该视频的 YouTube 应用程序。

    如果您想要图像缩略图而不是文本链接来打开视频
    简单地

    关于android - 自定义 Android WebView 以在内部打开除 YouTube 链接之外的所有链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467104/

    相关文章:

    java - Maven 更新链接

    ios - WKWebview 和 <输入类型 ="file"

    单个 .html 文件上的 Android WebView 给出 “net::ERR_CACHE_MISS”

    php - 是否可以将 youtube channel 上传的视频列表实现到网站中?

    android - 是否已在每部 Android 手机上安装了 android market 应用程序

    javascript - Cordova视频方向问题android

    youtube - 可使用默认嵌入播放的YouTube视频,但无法使用youtube api播放

    javascript - 一两秒钟后视频变黑

    android - RecyclerView 与 ListView

    JavaFX WebView、reCaptcha 无法工作(浏览器不受支持)