Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中的webview主机应用_Android_Webview - Fatal编程技术网

android中的webview主机应用

android中的webview主机应用,android,webview,Android,Webview,我是初学者。当我开始使用webview制作应用程序时 我在上面看到了 当URL即将加载到当前WebView中时,让宿主应用程序有机会控制它 我的英语很差,但我知道这是怎么回事。但我不明白什么是主机应用程序,为什么它会这样调用 1) 主机应用程序是指我的应用程序中的web浏览器还是web视图 2) 如何在webview和浏览器中使用OverrideUrlLoading应该会有所帮助 3) 返回true将打开web浏览器 @Override public boolean shouldOverride

我是初学者。当我开始使用webview制作应用程序时

我在上面看到了

当URL即将加载到当前WebView中时,让宿主应用程序有机会控制它

我的英语很差,但我知道这是怎么回事。但我不明白什么是主机应用程序,为什么它会这样调用

1) 主机应用程序是指我的应用程序中的web浏览器还是web视图

2) 如何在webview和浏览器中使用OverrideUrlLoading应该会有所帮助

3) 返回true将打开web浏览器

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    final Uri uri = Uri.parse(url);
    return handleUri(view, uri);
}

@TargetApi(Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    final Uri uri = request.getUrl();
    return handleUri(view, uri);
}
和handleUri方法

private boolean handleUri(WebView view, Uri uri) {
    final String scheme = uri.getScheme();
    final String host = uri.getHost();
    // Based on some condition you need to determine if you are going to load the url
    // in your web view itself or in a browser.
    // You can use `host` or `scheme` or any part of the `uri` to decide.
    if (scheme.startsWith("http:") || scheme.startsWith("https:")) {
        view.loadUrl(uri.getPath());
        return true;
    } else {
        return false;
    }
}

使用webview时,您可以使用shouldOverrideUrlLoading输入特定url(您希望用户看到的url)。此方法还将在从网页中删除数据时使用一些更高级的编码,允许您收集html数据,并可能以创造性的方式修改或利用html文档代码。然后在准备就绪时向用户显示webview


注意,根据您的最低api设置,您必须以不同的方式使用它。有一些关于谷歌搜索的教程,但大多数都过时了。这不是常见的做法。应用程序通常使用url提供的api,然后显示数据或预期的视觉效果。

在文档中,调用view.loadUrl()并返回true不是正确的方法。这是正确的。使用webview时,您可以完全控制一切。您必须模拟浏览器。比如说,如果你真的想让一个用户登录一个网站。您将在输入框中输入用户名和密码并提交。然后url实际上在到达最后一页之前经过几个url。基本上加载url然后返回true就像说加载这个url然后停止加载这个url然后停止。Err true将覆盖传递给它的url加载该url,然后开始加载url。False只是加载传递给它的url。bro..实际上这里的主机应用程序是什么意思?这里的主机应用程序是指您的应用程序,您的编码包含webview。我可能弄错了。但我相信这意味着你想先在应用程序中使用预期的url做些什么,还是只在视图中显示url。是的,我想在webview中显示网页,但在文档中使用“主机应用程序”和“webview”一词让我感到困惑。如果是,则会导致当前webview中止在文档中加载url。但在我的网络视图中什么都没发生?为什么呢?主机应用程序是你的应用程序或活动,webview就像chrome浏览器一样。因此,中止加载url意味着停止在webview中加载此url。对url数据做一些处理,然后在这一点上变得复杂,因为您从那里构建“浏览器”。False表示只需使用为android设备选择的默认浏览器来加载和显示url。这是我能想出的最蹩脚的术语。