从网上查阅了好多资料,整合成这篇,感谢csdn。测试了一下,能够在获得多次广播状态下显示一次网络断开的toast,不多说,上代码:
网络连接检测类:
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
* 网络连接状态检查类,这个是借鉴别人的,感谢提供者
* @author Administrator
*
*/
public class ConnectionDetector {
private Context _context;
public ConnectionDetector(Context context){
this._context = context;
}
public boolean isConnectingToInternet(){
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)
{
return true;
}
}
return false;
}
}
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
import com.zhenhua.xiuxiang.entity.ConnectionDetector;
public class ConnectionChangeReceiver extends BroadcastReceiver {
private static int lastType = -1;
@Override
public void onReceive(Context context, Intent intent) {
// log.debug("网络状态改变");
String action = intent.getAction();
Log.i("tag", "网络状态改变 action=" + action + " lastType=" + lastType);
// 获得网络连接服务
// 检查连接状态
ConnectionDetector cd = new ConnectionDetector(context);
Boolean isInternetPresent = cd.isConnectingToInternet(); // true or
if (!isInternetPresent) {
if (lastType != -1) {
Toast.makeText(context, "网络连接中断", Toast.LENGTH_LONG).show();
}
lastType = -1;
} else {
lastType = 1;
}
}
}
配置:
<receiver
android:name="com.ConnectionChangeReceiver"
android:label="NetworkConnection">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
权限设置:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />