使用shouldOverrideUrlLoading在移动浏览器和应用程序中选择性打开链接



是否有一个条件我可以添加到shouldOverrideUrlLoading,它可以在应用程序中保留一些链接,同时将其他链接引导到移动浏览器?

我最初的想法是这样的:

if (url.contains("myurl.com")){
    //open the url in the app
}
else{
    //open the url in the mobile browser
}

由于我的理解有限,这是我能想到的最好的主意。我对其他想法持开放态度,任何语法帮助都将不胜感激。

你最初的想法是正确的
事实上,我认为shouldOverrideUrlLoading()正是API的一部分。

打开应用程序中的url=

super.shouldOverrideUrlLoading();
mYourWebViewInstance.loadUrl(url);
return true;

在移动浏览器中打开url=

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url ));
startActivity(browserIntent);
return true;

此代码将直接启动可以处理此数据类型的应用程序,在这种情况下,它是安装在您设备上的任何浏览器应用程序,或者如果您安装了多个web浏览器,并且没有一个设置为默认(始终使用…打开),则会让您选择一个浏览器来显示url

根据文档返回true意味着您自己处理了url,事件就被消耗掉了。

安卓平台和某些固件之间也存在不一致的问题-根据我的经验,我看到在一些设备中,不覆盖此回调默认情况下会返回false(将触发外部web浏览器的意向选择器),而一些设备默认情况下返回true。

这就是为什么你总是必须覆盖这个回调,以确保你确切地知道你的应用程序在所有设备上的行为。

那么,它是否回答了你的问题?

最新更新