Android 动态注册监听网络变化实例详解
程序员文章站
2023-08-25 13:20:56
android 动态注册监听网络变化实例详解
新建一个broadcasttest项目,然后修改mainactivity中的代码,如下:
public class...
android 动态注册监听网络变化实例详解
新建一个broadcasttest项目,然后修改mainactivity中的代码,如下:
public class mainactivity extends appcompatactivity { private intentfilter intentfilter; private networkchangereceiver networkchangereceiver; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); intentfilter=new intentfilter(); intentfilter.addaction("android.net.conn.connectivity_change"); //广播接收器想要监听什么广播,就在这里添加相应的action networkchangereceiver=new networkchangereceiver(); registerreceiver(networkchangereceiver,intentfilter); //调用resigerreceiver()方法进行注册 } @override protected void ondestroy(){ super.ondestroy(); unregisterreceiver(networkchangereceiver); } class networkchangereceiver extends broadcastreceiver{ @override public void onreceive(context context, intent intent){ // toast.maketext(context,"network changes",toast.length_short).show(); connectivitymanager connectionmanager=(connectivitymanager) getsystemservice(context.connectivity_service); //得到系统服务类 networkinfo networkinfo=connectionmanager.getactivenetworkinfo(); if(networkinfo!=null&&networkinfo.isavailable()){ toast.maketext(context,"network is available",toast.length_short).show(); }else{ toast.maketext(context,"network is unavailable",toast.length_short).show(); } } } }
动态注册的广播接收器一定要取消注册才行,在ondestroy()方法中通过调用unregisterreceiver()方法来实现。
访问系统的网络状态需要声明权限,打开androidmanifest.xml文件,在里面加入权限,如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.broadcasttest"> <uses-permission android:name="android.permission.access_network_state"/> <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsrtl="true" android:theme="@style/apptheme"> <activity android:name=".mainactivity"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest>
运行程序,打开数据连接、关闭数据连接,效果如下:
以上就是android 动态注册监听网路变化的实例详解,如果大家有疑问可以留言或者到本站社区交流,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!