zoukankan      html  css  js  c++  java
  • Android学习——动态注册监听网络变化

    新建一个BroadcastTest项目,然后修改MainActivity中的代码,如下:

     1 public class MainActivity extends AppCompatActivity {
     2     private IntentFilter intentFilter;
     3     private NetworkChangeReceiver networkChangeReceiver;
     4 
     5     @Override
     6     protected void onCreate(Bundle savedInstanceState) {
     7         super.onCreate(savedInstanceState);
     8         setContentView(R.layout.activity_main);
     9         intentFilter=new IntentFilter();
    10         intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");    //广播接收器想要监听什么广播,就在这里添加相应的action
    11         networkChangeReceiver=new NetworkChangeReceiver();
    12         registerReceiver(networkChangeReceiver,intentFilter);              //调用resigerReceiver()方法进行注册
    13     }
    14 
    15     @Override
    16     protected void onDestroy(){
    17         super.onDestroy();
    18         unregisterReceiver(networkChangeReceiver);
    19     }
    20 
    21     class NetworkChangeReceiver extends BroadcastReceiver{
    22         @Override
    23         public void onReceive(Context context, Intent intent){
    24 //          Toast.makeText(context,"network changes",Toast.LENGTH_SHORT).show();
    25             ConnectivityManager connectionManager=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);    //得到系统服务类
    26             NetworkInfo networkInfo=connectionManager.getActiveNetworkInfo();
    27             if(networkInfo!=null&&networkInfo.isAvailable()){
    28                 Toast.makeText(context,"network is available",Toast.LENGTH_SHORT).show();
    29             }else{
    30                 Toast.makeText(context,"network is unavailable",Toast.LENGTH_SHORT).show();
    31             }
    32         }
    33     }
    34 }

    动态注册的广播接收器一定要取消注册才行,在onDestroy()方法中通过调用unregisterReceiver()方法来实现。

    访问系统的网络状态需要声明权限,打开AndroidManifest.xml文件,在里面加入权限,如下:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     3     package="com.example.administrator.broadcasttest">
     4 
     5     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
     6     <application
     7         android:allowBackup="true"
     8         android:icon="@mipmap/ic_launcher"
     9         android:label="@string/app_name"
    10         android:supportsRtl="true"
    11         android:theme="@style/AppTheme">
    12         <activity android:name=".MainActivity">
    13             <intent-filter>
    14                 <action android:name="android.intent.action.MAIN" />
    15 
    16                 <category android:name="android.intent.category.LAUNCHER" />
    17             </intent-filter>
    18         </activity>
    19     </application>
    20 
    21 </manifest>

    运行程序,打开数据连接、关闭数据连接,效果如下:

  • 相关阅读:
    JavaScript数组
    JavaScript正则表达式之分组匹配 / 反向引用
    JavaScript函数之作用域 / 作用链域 / 预解析
    JavaScript正则表达式实例汇总
    python+unittets框架
    locust简介
    seleniumselenium各种技巧,滑动,提示框,窗口大小,iframe切换等等
    selenium 定位元素的方式
    jmeter环境配置,配置中文环境,原理-1
    appium环境搭建+真机+获取package和activity来验证是否搭建成功+appium自带的定位元素
  • 原文地址:https://www.cnblogs.com/cxq1126/p/7206030.html
Copyright © 2011-2022 走看看