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

时间:2013-08-22 16:10:35

标签: android webview android-webview

是否存在我可以添加到shouldOverrideUrlLoading的条件,该条件会在将其他链接指向移动浏览器时保留应用中的某些链接?

我最初的想法是这样的:

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

由于我的理解有限,这是我能想到的最好的主意。我对其他想法持开放态度,并且非常感谢任何语法帮助。

1 个答案:

答案 0 :(得分:1)

你的初步想法是正确的 事实上,我相信shouldOverrideUrlLoading()是API的一部分。

打开app =

中的网址
super.shouldOverrideUrlLoading();
mYourWebViewInstance.loadUrl(url);
return true;

在移动浏览器中打开网址=

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

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

根据documentation返回true表示您自己处理了该网址,并且该活动已被使用。

还有issue of inconsistency across android platforms and certain firmwares - 根据我的经验,我已经看到在某些设备中没有覆盖此回调默认情况下会返回false(将触发外部Web浏览器的意图选择器),并且某些设备返回true默认情况下。

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

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