添加自定义 android webview 错误页面
Posted
技术标签:
【中文标题】添加自定义 android webview 错误页面【英文标题】:Add custom android webview error page 【发布时间】:2015-11-16 04:29:15 【问题描述】:在我的应用中,我想要一个错误活动“不是错误的 HTML 页面”。其中包含刷新按钮和布局。我已经搜索了它,但我发现它只是资产文件夹中的一个自定义 html 错误页面。
我在下面创建了一些代码, 我想要的是,当发生网络错误时,它会打开这样的活动,用户可以使用按钮轻松刷新页面。
我想做这样的错误页面..
这不是一个 html 错误页面。这包含带有刷新按钮的布局,
public WebView mWebview ;
@Override
protected void onCreate(final Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
mWebview = new WebView(this);
mWebview.getSettings().setjavascriptEnabled(true); // enable javascript
mWebview.setWebViewClient(new WebViewClient()
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
// Do Something Here, I don't know what to do.. :(
);
mWebview.loadUrl("google.com");
setContentView(mWebview);
@Override
public boolean onCreateOptionsMenu(Menu menu)
getMenuInflater().inflate(R.menu.option, menu);
return true;
@Override
public boolean onOptionsItemSelected(MenuItem item)
// Handle presses on the action bar items
switch (item.getItemId())
case R.id.refresh:
startActivity(new Intent(this, CeS1.class));
finish();
return true;
case R.id.about:
startActivity(new Intent(this, Credits_activity.class));
finish();
return true;
case R.id.gotomain:
startActivity(new Intent(this, MenuActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
【问题讨论】:
实现代码中显示的 onReceivedError() 方法以实现类似 startActivity(new Intent(this, error_activity.class)) 的内容,您甚至可以在启动 error_activity 时发送错误信息。跨度> 能详细解释一下吗? 【参考方案1】:在你的代码中调用它
webview.setWebViewClient(new WebViewClient()
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
//place you error code here
);
【讨论】:
此onReceivedError()
方法已弃用。参考这个链接:developer.android.com/reference/android/webkit/…【参考方案2】:
您可以创建具有 2 层的布局。一个是WebView
,另一个是你的错误布局。当您的WebView
遇到网络错误时,您可以隐藏您的WebView
并显示带有重试按钮的errorView。
【讨论】:
【参考方案3】:首先,您将 HTML 错误页面放在资产文件夹中,然后 您需要根据以下代码覆盖 onReceivedError,
private class MyWebViewClient extends WebViewClient
.
.
.
// api<23
@Override
public void onReceivedError(WebView view, int errorCode, String description, String url)
view.stopLoading();
webview.loadUrl("file:///android_asset/error/error.html");
// api> 23
@Override
@TargetApi(android.os.Build.VERSION_CODES.M)
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error)
view.stopLoading();
webview.loadUrl("file:///android_asset/error/error.html");
// super.onReceivedError(view, request, error);
.
.
.
【讨论】:
以上是关于添加自定义 android webview 错误页面的主要内容,如果未能解决你的问题,请参考以下文章
在 SwiftUI WebView 中自定义内容(添加页脚和页眉注释)
如何在现有的 webview android 中添加自定义按钮?
(源码)解决Android的WebView加载失败(404,500),显示的自定义视图
Android WebView开发:自定义WebView工具框