我的WebView应用遇到麻烦。
我想要所有可能的错误页面(例如,连接断开,服务器超时等)自定义的错误页面,该页面可在应用程序中离线使用。
因此,这意味着如果出现任何问题,都可以重定向到Web视图中的脱机页面。
我不想在超时或互联网连接丢失之间有所作为,我只是想将所有可能的网络错误重定向到离线站点。
有可能吗?
答案 0 :(得分:0)
我只想将所有可能的网络错误重定向到离线站点。
如果发生任何错误,我认为您需要一个自定义WebView
类来进行URL重定向。
MainActivity.java
/* ... */
public class MainActivity extends AppCompatActivity {
MyWebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (MyWebView) findViewById(R.id.web_view);
mWebView.loadUrl("https://www.google.com/");
}
}
activity_main.xml
<!-- ... -->
<your_package_name.MyWebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!-- ... -->
MyWebView.java
/* ... */
public class MyWebView extends WebView {
public MyWebView(Context context) {
super(context);
initView(context);
}
public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}
@SuppressLint("SetJavaScriptEnabled")
private void initView(Context context){
this.getSettings().setJavaScriptEnabled(true) ;
this.getSettings().setUseWideViewPort(true);
this.getSettings().setLoadWithOverviewMode(true);
this.getSettings().setDomStorageEnabled(true);
this.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(final WebView view, int errorCode, String description,
final String failingUrl) {
MyWebView.this.loadUrl("file:///android_asset/error.html");
}
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError errorResponse) {
MyWebView.this.loadUrl("file:///android_asset/error.html");
}
});
}
}
记住将您的error.html
放在app/src/main/assets
内