一、广播注册
1.动态注册监听网络变化
当网络状态发生变化时,系统发出值为android.net.conn.CONNECTIVITY_CHANGE的广播,广播接收器想要监听什么广播,就在这里添加相应的action;然后调用registerReceiver()方法注册广播,即可实现监听网络变化的功能
1】修改MainActivity文件
public class MainActivity extends AppCompatActivity {
private IntentFilter mIntentFilter;
private NetworkChangeReceiver mNetworkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mIntentFilter = new IntentFilter();
mIntentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
mNetworkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(mNetworkChangeReceiver, mIntentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mNetworkChangeReceiver);
}
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, "network is available", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "network is unAvailable", Toast.LENGTH_SHORT).show();
}
}
}
}
定义一个内部类,继承 BroadcastReceiver,该类重写onReceive()方法,该方法中通过getSystemService()得到ConnectivityManager 实例,这是一个系统服务类,专门用于管理网络连接的;获取NetworkInfo 实例,调用其isAvailable()方法就可以判断出当前是否有网络
2】修改配置文件添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在手机中安装该apk,打开流量,滑动任何页面,弹出 “network is available”;否则弹出"network is unAvailable"
2.静态注册开机广播
1】直接创建BroadcastReceiver ,new->other->BroadcastReceiver
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Boot complete", Toast.LENGTH_SHORT).show();
}
}
2】在配置文件中注册广播,并添加权限
<application>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver
android:name=".broadcast.MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
在手机中安装apk,并重启手机,就可接收到该广播