Java Android-Get-Host-isn';他没有始终如一地回来
我有自己的Java Android-Get-Host-isn';他没有始终如一地回来,java,android,android-intent,android-webview,Java,Android,Android Intent,Android Webview,我有自己的mywebview客户端,它在我的应用程序中为我的webView扩展了webView客户端。我在webview上实现了自己的USERAGENT字符串,并使用网站的后端,在页面上显示了一个不同的链接,而不是制作所有型号都不支持的复杂导航栏。我做了两个链接,当点击时应该触发事件。下面是我用来实现这一点的函数 @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest r
mywebview客户端
,它在我的应用程序中为我的webView
扩展了webView客户端
。我在webview上实现了自己的USERAGENT
字符串,并使用网站的后端,在页面上显示了一个不同的链接,而不是制作所有型号都不支持的复杂导航栏。我做了两个链接,当点击时应该触发事件。下面是我用来实现这一点的函数
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if (request.getUrl().getHost().equals("close.app")) {
clearCookiesAndCache();
return false;
}
if (request.getUrl().getHost().equals("showsettings.app")) {
openSettingsMenu();
return true;
}
if (request.getUrl().getHost().equals(SERVER_URL)) {
return false;
}
final Uri uri = request.getUrl();
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
return true;
}
如果用户访问服务器\u URL
字符串,这是我的webView加载的域,那么我们将在webView中加载新页面。如果他们在网址(example.com
)之外单击,例如notexample.com
,那么我们将开始一个新的意图,在chrome或其他浏览器中打开外部链接
这在android Studio内的android环境中非常有效。然而,当我将其添加到我的实时测试设备时,单击链接是试图将其作为页面加载,而不是像在我的studio环境中那样触发showSettings事件或将其注销
我在这里做错了什么,没有在所有设备上获得正确的主机字符串?以防万一,这里是我的showSettings功能,它在Studio环境(Nexus 5和Google Pixel 2)中也能正常启动,我的测试设备是三星Galaxy S6 Edge btw
public void openSettingsMenu() {
Log.e(TAG, "They requested the settings menu");
isSettingsOpen = true;
startActivity(new Intent(Browser.this, appSettings.class));
}
谢谢你的帮助。我解决了这个问题。显然,在旧版本上,您需要覆盖字符串Url,而不是webresourcerequest。一旦我转换成字符串版本,它就开始工作了。我不确定哪个版本是不推荐的,所以我将使用这个版本,因为它似乎正在工作。这里是更新的工作代码
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
super.shouldOverrideUrlLoading(view, url);
if (Uri.parse(url).getHost().equals("close.app")) {
clearCookiesAndCache();
return true;
}
if (Uri.parse(url).getHost().equals("showsettings.app")) {
openSettingsMenu();
return true;
}
if (Uri.parse(url).getHost().equals(SERVER_URL)) {
return false;
}
final Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
return true;
}