android 7.0 短信监控,Android 实时监测网络,网络变化监听 适配7.0

链接:(https://www.jianshu.com/p/89e3fbd33964)

一、编写判断网络帮助类 NetUtil

public static int getNetWorkState(Context context) {

//得到连接管理器对象

ConnectivityManager connectivityManager = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetworkInfo = connectivityManager

.getActiveNetworkInfo();

//如果网络连接,判断该网络类型

if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {

if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) {

return NETWORK_WIFI;//wifi

} else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) {

return NETWORK_MOBILE;//mobile

}

} else {

//网络异常

return NETWORK_NONE;

}

return NETWORK_NONE;

}

二、编写检测网络变化广播类

public class NetBroadcastReceiver extends BroadcastReceiver {

public NetChangeListener listener = BaseActivity.listener;

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

// 如果相等的话就说明网络状态发生了变化

Log.i("NetBroadcastReceiver", "NetBroadcastReceiver changed");

if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {

int netWorkState = NetUtil.getNetWorkState(context);

// 当网络发生变化,判断当前网络状态,并通过NetEvent回调当前网络状态

if (listener != null) {

listener.onChangeListener(netWorkState);

}

}

}

// 自定义接口

public interface NetChangeListener {

void onChangeListener(int status);

}

}

三、注册广播

这里有一个问题,在Android 7.0之静态注册广播的方式被取消了,所以我们这里采用动态注册的方式

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {

//实例化IntentFilter对象

IntentFilter filter = new IntentFilter();

filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");

netBroadcastReceiver = new NetBroadcastReceiver();

//注册广播接收

registerReceiver(netBroadcastReceiver, filter);

}

四、创建一个回调当前网络状态值的接口类

// 自定义接口

public interface NetChangeListener {

void onChangeListener(int status);

}

五、并在BaseActivity中实现该接口,广播检测到网络变化时,通过onChangeListener回调当前网络状态至BaseActivity

/**

* 网络变化之后的类型

*/

@Override

public void onChangeListener(int netMobile) {

// TODO Auto-generated method stub

this.netType = netMobile;

Log.i("netType", "netType:" + netMobile);

if (!isNetConnect()) {

showNetDialog();

T.showShort("网络异常,请检查网络");

} else {

hideNetDialog();

T.showShort("网络恢复正常");

}

}

六、这里写了个dialog用来提示网络的变化 showNetDialog() 和 hideNetDialog()分别用来显示和隐藏dialog

/**

* 弹出设置网络框

*/

private void showNetDialog() {

if (alertDialog == null) {

alertDialog = new MyAlertDialog(this).builder().setTitle("网络异常")

.setNegativeButton("取消", new OnClickListener() {

@Override

public void onClick(View view) {

}

}).setPositiveButton("设置", new OnClickListener() {

@Override

public void onClick(View view) {

Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);

startActivity(intent);

}

}).setCancelable(false);

}

alertDialog.show();

showMsg("网络异常,请检查网络");

}

七、通过Intent跳转到网络设置页面

Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);

startActivity(intent);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值