【问题标题】:How understand, what link from webview is YouTube link, to open it in YouTube app?lication如何理解,来自 webview 的链接是 YouTube 链接,在 YouTube 应用程序中打开它?
【发布时间】:2021-07-24 02:52:03
【问题描述】:

我希望,当用户点击网页查看链接时,它会打开 YouTube 应用。我如何解析这个链接,即我应该使用什么算法,知道它是否链接到 youtube 视频(确切的视频,而不是频道或简单的 YouTube 网站)。因为你可以有,例如 youtube.com,或者 youtu.be,所以它不是那么明显的解决这个问题。可能我应该使用正则表达式,但我不确定它是正确的方式。可能有人反编译 youtube 应用程序并查看此应用程序的来源以了解、它如何理解、它纠正了 youtube 视频链接的内容。感谢大家的帮助。

【问题讨论】:

    标签: java android kotlin webview youtube


    【解决方案1】:

    了解深层链接。它们在您的应用清单中声明,它们可以拦截任何类型的链接、主机或 URL 架构。

    <intent-filter>
          ...
          <data android:scheme="https" android:host="www.youtube.com" />
          <data android:scheme="app" android:host="open.my.app" />
    </intent-filter>
    

    Official documentation

    如果您需要拦截 WebView 中的链接,则可以在 shouldOverrideUrlLoading 中添加一些逻辑:

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Uri uri = Uri.parse(url);
        if(url.equals("www.youtube.com/xxxx")) {
            launchYoutubeApp(url) ;
            return true;
        }
        
        if(uri.getHost().contains("youtube")) {
            view.loadUrl(url);
            return true;
        }
        //add here any condition you need in order of preference
        return false;
    }
    

    【讨论】:

    • 我的意思是如何从方法 ShouldOverrideOrLoading 解析来自 webviewClient 的就绪链接,但不打开 youtube 链接。如果我知道,它的确切 YouTube 视频链接是什么,我想在 YouTube 应用程序中打开它,但如何知道呢?
    • @AleksandrKozlovskiy 我已经编辑了我的答案
    • 但链接可以在 YouTube.com 上的简单频道上引用,但不能在 YouTube 视频上。如果我将重定向到 YouTube,uri 是否将包含 YouTube.com 作为主机?
    猜你喜欢
    • 2012-02-22
    • 2015-03-10
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2016-01-11
    相关资源
    最近更新 更多