我是Android应用程序开发的新手,但我有一个有应用程序的网站 - 该应用程序只是使用webview来加载网站。到目前为止非常简单。
由于桌面用户将使用该网站本身,并且他们想要分享他们在网站上遇到的链接,移动用户可能会说,去Facebook,看到他们想要访问的链接,它只会打开网站在浏览器中,而不是在应用程序中加载该URL,这显然会破坏/混淆用户(该网站有一个登录系统,对于初学者,他们需要从Android浏览器再次登录)。
有没有办法在Android中监听网站链接并使用应用程序的webview打开这些链接,而不是在浏览器中打开?我知道Facebook有fb://链接打开应用程序。
但问题进一步复杂化。实际上,为了防止内部链接启动外部Android浏览器,我有一个过滤效果:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("root_address_of_site/page/")) {
return false;
} else {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}
return true;
}
在应用程序中,您可以通过基本网址分享指向Facebook,Twitter和日历的链接,因此指向Twitter的链接可能是https://twitter.com/intent/tweet?original_referer=root_address_of_site/page/&text=page_name&tw_p=tweetbutton&url=root_address_of_site/page/。当然,这只会被过滤器阻止,因为意图URL'包含''root_address_of_site / page /'。我想知道是否有办法改变过滤器,使其“以'开头',而不是'url.contains'?这意味着Twitter / facebook链接仍将在外部打开,但无论如何,仍然可以在应用程序内打开指向该网站的链接。
我希望这是有道理的 - 描述起来很难。感谢您的帮助!
答案 0 :(得分:0)
这是documentation about how to handle your own links in app
所以你需要将你的一个活动注册为所需的uri模式的处理程序:
<activity android:name="OpenCustomUriActivity">
<intent-filter>
<data
android:scheme="http"
android:host="yoursite.com"
android:pathPrefix="pathOnYourSiteIfNeeded"
/>
</intent-filter>
</activity>
然后只需处理活动中的意图并做你需要的事情。