您的位置:首页 > 理论基础 > 计算机网络

[Android新手学习笔记28]-Broadcast-例一广播检测网络变化

2017-02-18 23:37 441 查看
新建一个带MainActivity的项目,注意这里需要获得网络使用状态,需要在AndroidMainfest文件中注册权限:

package="top.xiexiaodong.broadcastdemo">


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


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");

       networkChangeReceiver = new NetworkChangeReceiver();

       registerReceiver(networkChangeReceiver, intentFilter);

   }


   @Override

   protected void onDestroy() {

       super.onDestroy();

       unregisterReceiver(networkChangeReceiver);

   }


   class NetworkChangeReceiver extends BroadcastReceiver {


       @Override

       public void onReceive(Context context, Intent intent) {

           ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

           NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();


           if (networkInfo != null && networkInfo.isAvailable()) {

               Toast.makeText(context, "网络连接", Toast.LENGTH_SHORT).show();

               Log.d("xxd", "网络连接");

           } else {

               Toast.makeText(context, "网络断开", Toast.LENGTH_SHORT).show();

               Log.d("xxd", "网络断开");

           }

       }

   }

}


广播必须注册,使用完必须取消注册,使用registerReceiver()方法可以进行注册,使用unregisterReceiver()方法取消注册。怎么才能接收广播呢?我们新建一个继承自BroadcastReceiver类的类,重写onReceive()方法,那么接收到广播后的逻辑就在这个方法中处理。android.net.conn.CONNECTIVITY_CHANGE是系统发出的广播名称,也就是网络连接改变时,会发出。然后注册上面的广播服务的会收到这条广播,进行相应的处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android Broadcast