您的位置:首页 > 移动开发 > Android开发

Android学习笔记——BroadcastReceiver

2017-04-03 11:46 176 查看

BroadcastReceiver的静态注册和动态注册

注册广播的方式

1.动态注册(在*.java代码中注册)

2.静态注册(在AndroidManifest.xml中注册receiver)

例:动态注册,监听网络变化

MainActivity.java

1. 声明两个数据成员

private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;


2.在onCreate方法里注册广播

intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); //要监听的广播(网络变化)
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver, intentFilter);          //注册


3.重写MainActivity的onDestory方法,取消注册

@Override
protected void onDestroy() {
super.onDestroy();
localBroadcastManager.unregisterReceiver(networkChangeReceiver);    //取消注册
}


4.创建一个内部类NetworkChangeReceiver继承广播接收器BroadcastReceiver

class NetworkChangeReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
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();
}
}
}


5.在AndroidManifest.xml内加入查看系统网络状态的权限

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


6.运行程序,在打开或关闭网络时就会有相应提示,即使按下Home键,打开其他应用也能检测到网络状态变化并发送广播(但如果按返回键则不行,返回会自动调用onDestroy方法取消注册的广播。)

例:静态注册,实现开机启动

1.新建类继承BroadcastReceiver,重写onReceive方法

public class BootCompleteReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Boot Complete", Toast.LENGTH_LONG).show);
}

}


2.在AndroidManifest中声明开机启动权限

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


3.在AndroidManifest中静态注册广播接收器

<receiver android:name=".BootCompleteReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>


4.把程序安装在手机上,重启手机后,就会看到发出的广播”Boot Complete”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息