android - 在 Android 上加载某些 URL 时,WebView 不显示任何内容
问题描述
我在 Android 上有一个使用 WebView 的演示。这是我的代码:
public class AuthPortalActivity extends Activity {
WebView authPortalWebview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.auth_portal_activity);
authPortalWebview = (WebView) findViewById(R.id.auth_portal_webview);
authPortalWebview.setWebViewClient(new WebViewPortal());
openProvisioningPortal();
}
private void openProvisioningPortal() {
authPortalWebview.getSettings().setLoadsImagesAutomatically(true);
authPortalWebview.getSettings().setJavaScriptEnabled(true);
authPortalWebview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
authPortalWebview.loadUrl("https://example.com");
}
}
class WebViewPortal extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("TAG", "shouldOverrideUrlLoading url = " + url);
return true;
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
}
@Override
public void onPageFinished(final WebView view, String url) {
super.onPageFinished(view, url);
Log.d("TAG", "onPageFinished");
}
}
它可以加载一些 URL,如谷歌、Facebook ......但是当我尝试使用我的门户 URL 时,它无法显示任何内容。确定我的门户网站使用“https”,如果我使用 Chrome 之类的浏览器,它也会成功加载...
这是调用加载 URL 和方法onPageFinished后的 WebView 。
我在我的代码中忘记了什么吗?
解决方案
要么返回false
以shouldOverrideUrlLoading
继续正常加载 url
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("TAG", "shouldOverrideUrlLoading url = " + url);
return false;
// ^^^^^
}
或者
您有自己的客户端WebViewPortal
,因此您还需要加载 url
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("TAG", "shouldOverrideUrlLoading url = " + url);
view.loadUrl(url);
//^^^^^^^^^^^^^^ load the url once you receive web view and link
return true;
}
WebViewClient 负责处理请求,并根据 onPageFinish 或 started 等通知进行处理。
推荐阅读
- c# - 序列化集合正在转换为 JObject 而不是 JArray
- python-3.x - 如何有选择地在 Jupyter 笔记本中显示图形
- excel - 我想将非空白单元格和相应的标题复制到所需目的地的另一张纸上
- php - 如何将特定的 PostgreSQL 查询转换为 laravel 查询生成器
- c++ - 如何在 Windows 10 上添加连接器 c++ 并提升到 clion 项目
- android - 将底部导航视图样式更改为图片
- tensorflow - 如何使用 jupyter notebook 在多个 CPU 上运行 Tensorflow
- javascript - 用变量替换输入值和
- java - 无法打开图库选择图像并将其放置在 ImageView 中
- api - Clockify API:项目的时间报告并按用户汇总