如何理解,来自 webview 的链接是 YouTube 链接,在 YouTube 应用程序中打开它?

Posted

技术标签:

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

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

以上是关于如何理解,来自 webview 的链接是 YouTube 链接,在 YouTube 应用程序中打开它?的主要内容,如果未能解决你的问题,请参考以下文章

Android WebView拉起软键盘的流程浅析

Android WebView拉起软键盘的流程浅析

app中的webview是啥?如何理解?

如果它进入webview(swift),如何在webview中打开链接

如何在android中检测来自WebView的通知?

Swift 如何在 Webview 中打开链接?