当前位置: 移动技术网 > IT编程>移动开发>Android > Android 网络状态实时监听代码实例(一)

Android 网络状态实时监听代码实例(一)

2019年07月24日  | 移动技术网IT编程  | 我要评论

蔡铀勍,卧底狼妃,铁树叶子发黄

其实手机在网络方面的的监听也比较重要,有时候我们必须实时监控这个程序的实时网络状态,android在网络断开与连接的时候都会发出广播,我们通过接收系统的广播就可以实现网络的监听。

1、添加访问网络和获取网络状态的权限

<uses-permission android:name="android.permission.access_network_state"/>
<uses-permission android:name="android.permission.internet" />

2、新建一个application类并继承android.app.application 申明变量保存网络状态

package com.javen.application;
import com.javen.netbroadcast.netutil;
public class application extends android.app.application {
private static application mapplication;
public static int mnetworkstate;
public static synchronized application getinstance() {
return mapplication;
}
@override
public void oncreate() {
super.oncreate();
mapplication = this;
initdata();
}
public void initdata() {
mnetworkstate = netutil.getnetworkstate(this);
}
}

3、新建netbroadcastreceiver类继承broadcastreceiver 并实现onreceive方法 在onreceive方法通知接口完成加载

package com.javen.receiver;
import java.util.arraylist;
import com.javen.application.application;
import com.javen.netbroadcast.netutil;
import android.content.broadcastreceiver;
import android.content.context;
import android.content.intent;
public class netbroadcastreceiver extends broadcastreceiver {
public static arraylist<neteventhandler> mlisteners = new arraylist<neteventhandler>();
private static string net_change_action = "android.net.conn.connectivity_change";
@override
public void onreceive(context context, intent intent) {
if (intent.getaction().equals(net_change_action)) {
application.mnetworkstate = netutil.getnetworkstate(context);
if (mlisteners.size() > 0)// 通知接口完成加载
for (neteventhandler handler : mlisteners) {
handler.onnetchange();
}
}
}
public static abstract interface neteventhandler {
public abstract void onnetchange();
}
}

4、在应该的activity中实现neteventhandler接口

package com.javen.netbroadcast;
import com.javen.receiver.netbroadcastreceiver;
import com.javen.receiver.netbroadcastreceiver.neteventhandler;
import com.javen.ui.base.baseactivity;
import android.os.bundle;
import android.view.menu;
public class mainactivity extends baseactivity implements neteventhandler{
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
netbroadcastreceiver.mlisteners.add(this);
}
@override
public boolean oncreateoptionsmenu(menu menu) {
// inflate the menu; this adds items to the action bar if it is present.
getmenuinflater().inflate(r.menu.main, menu);
return true;
}
@override
public void onnetchange() {
// todo auto-generated method stub
if (netutil.getnetworkstate(this) == netutil.networn_none) {
t.showlong(this, r.string.net_err);
}else {
t.showlong(this, "网络可以使用");
}
}
}

5、判断网络的工具类

package com.javen.netbroadcast;
import android.content.context;
import android.net.connectivitymanager;
import android.net.networkinfo.state;
public class netutil {
public static final int networn_none = 0;
public static final int networn_wifi = 1;
public static final int networn_mobile = 2;
public static int getnetworkstate(context context) {
connectivitymanager connmanager = (connectivitymanager) context
.getsystemservice(context.connectivity_service);
// wifi
state state = connmanager.getnetworkinfo(connectivitymanager.type_wifi)
.getstate();
if (state == state.connected || state == state.connecting) {
return networn_wifi;
}
// 3g
state = connmanager.getnetworkinfo(connectivitymanager.type_mobile)
.getstate();
if (state == state.connected || state == state.connecting) {
return networn_mobile;
}
return networn_none;
}
}

以上所述是小编给大家介绍的android 网络状态实时监听代码实例(一),希望对大家有所帮助!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网