Android 在webview中未检测到internet连接时,如何重定向到索引页

Android 在webview中未检测到internet连接时,如何重定向到索引页,android,Android,我正在创建一个网络安卓应用程序,我希望在没有互联网的情况下,我不希望用户注意到默认的浏览器错误消息。我已经创建了一个这样做的活动,但是当我在没有internet的情况下单击链接时,它会显示默认的浏览器消息 这是我的网络活动 package com.example.infonet.greenparrotnews; import android.content.BroadcastReceiver; import android.content.Context; import android.con

我正在创建一个网络安卓应用程序,我希望在没有互联网的情况下,我不希望用户注意到默认的浏览器错误消息。我已经创建了一个这样做的活动,但是当我在没有internet的情况下单击链接时,它会显示默认的浏览器消息

这是我的网络活动

package com.example.infonet.greenparrotnews;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.TextView;


public class Nointernet extends AppCompatActivity {

    private boolean isConnected = false;
    private static final String LOG_TAG = "CheckNetworkStatus";
    private NetworkChangeReceiver receiver;
    private TextView networkStatus;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_nointernet);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        receiver = new NetworkChangeReceiver();
        registerReceiver(receiver, filter);
        networkStatus = (TextView) findViewById(R.id.networkStatus);
    }






    public class NetworkChangeReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(final Context context, final Intent intent) {

            Log.v(LOG_TAG, "Receieved notification about network status");
            isNetworkAvailable(context);

        }


        private boolean isNetworkAvailable(Context context) {
            ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            if (connectivity != null) {
                NetworkInfo[] info = connectivity.getAllNetworkInfo();
                if (info != null) {
                    for (int i = 0; i < info.length; i++) {
                        if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                            if(!isConnected){
                                Log.v(LOG_TAG, "Now you are connected to Internet!");
                                networkStatus.setText("Now you are connected to Internet!");
                                isConnected = true;
                                //Intent q2 = new Intent(Nointernet.this, MainActivity.class);
                                //startActivity(q2);
                            }
                            return true;
                        }
                    }
                }
            }

            Log.v(LOG_TAG, "You are not connected to Internet!");
            networkStatus.setText("You are not connected to Internet!");
            isConnected = false;
            return false;
        }
    }

}
package com.example.infonet.greenparrotnews;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.os.Bundle;
导入android.support.design.widget.FloatingActionButton;
导入android.support.design.widget.Snackbar;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.util.Log;
导入android.view.view;
导入android.widget.TextView;
公共类Nointernet扩展了AppCompative活动{
私有布尔值isConnected=false;
私有静态最终字符串日志\u TAG=“CheckNetworkStatus”;
专用网络更改接收器;
私有文本视图网络状态;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u nointernet);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
IntentFilter筛选器=新的IntentFilter(ConnectionManager.CONNECTIVITY_操作);
receiver=新网络更改receiver();
寄存器接收器(接收器、过滤器);
networkStatus=(TextView)findViewById(R.id.networkStatus);
}
公共类NetworkChangeReceiver扩展了BroadcastReceiver{
@凌驾
公共void onReceive(最终上下文、最终意图){
Log.v(Log_标签,“已收到有关网络状态的通知”);
isNetworkAvailable(上下文);
}
专用布尔值isNetworkAvailable(上下文){
ConnectivityManager connectivity=(ConnectivityManager)context.getSystemService(context.connectivity\u SERVICE);
if(连接性!=null){
NetworkInfo[]info=connectivity.getAllNetworkInfo();
如果(信息!=null){
对于(int i=0;i
您可以尝试以下方法:

private void cache() {
    webView.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
    webView.getSettings().setAppCacheEnabled(true);
    webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); // load online by default
    if (!isNetworkAvailable()) { // loading offline
        webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    }
}

/** Checks for an active network connection: */
private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}