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