如何理解,来自 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 应用程序中打开它?的主要内容,如果未能解决你的问题,请参考以下文章