BroadCastReceiver
什么是BroadCastReceiver
第一步:新建一个类继承BroadcastReceiver
public class SdCardBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(“android.intent.action.MEDIA_MOUNTED”.equals(action)){
System.out.println(“sd卡已挂载”);
}else if(“android.intent.action.MEDIA_UNMOUNTED”.equals(action)){
} } }
第二步:在清单文件中注册
<receiver android:name=”com.example.sdbroadcast.SdCardBroadcastReceiver”/>
第三步:在清单文件中添加意图过滤器,action里写监听的内容
<intent-filter>
<action android:name=”android.intent.action.MEDIA_MOUNTED”/>
<action android:name=”android.intent.action.MEDIA_UNMOUNTED”/>
<data android:scheme=”file”/>
</intent-filter>
普通广播


第一步:新建一个类继承BroadcastReceiver
publicclass MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(“android.1804.receiver”)){
Bundle bundle = intent.getBundleExtra(“mybundle”);
String message = bundle.getString(“msg”);
Log.d(“amy”,message); //端午节
}
}
}
第二步:注册BroadcastReceiver
<receiverandroid:name=”.MyBroadcastReceiver”>
<!–广播优先级0-1000,默认500–>
<intent-filter android:priority=”1000″>
<action android:name=”android.1804.receiver”/>
</intent-filter>
</receiver>
第二步:注册BroadcastReceiver
<receiverandroid:name=”.MyBroadcastReceiver”>
<!–广播优先级0-1000,默认500–>
<intent-filter android:priority=”1000″>
<action android:name=”android.1804.receiver”/>
</intent-filter>
</receiver>
第二步:
注册BroadcastReceiver
publicclass ReceiverActivity extends AppCompatActivity {
MyBroadcastReceiverregisterReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receiver);
registerReceiver= new MyBroadcastReceiver();
IntentFilterintentFilter = new IntentFilter();
intentFilter.setPriority(1000);
intentFilter.addAction(“android.1804.receiver”);
registerReceiver(registerReceiver,intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(registerReceiver); }}
第三步:发送广播
publicvoid sendBroadcast(View view) {
Intent intent=new Intent();
intent.setAction(“android.1804.receiver”);
Bundle bundle=new Bundle();
bundle.putString(“msg”,”端午节快乐”);
intent.putExtra(“mybundle”,bundle);
//以下这行代码静态注册时必须添加,第二个参数为自定义广播接收者类名
// intent.setComponent(newComponentName(getPackageName(),”com.example.myapplication.MyBroadcastReceiver”));
sendBroadcast(intent);
}
有序广播
第一步:新建一个类继承BroadcastReceiver
publicclass MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(“android.1804.receiver”)){
Bundle bundle = intent.getBundleExtra(“mybundle”);
String message = bundle.getString(“msg”);
Log.d(“amy”,message); //端午节
}
}
}
第二步:注册BroadcastReceiver(为了看到有序,案例中创建了两个广播接收者)
<receiver android:name=”.MyBroadcastReceiver”>
<!–广播优先级0-1000,默认500–>
<intent-filter android:priority=”100″>
<action android:name=”android.1804.receiver”/>
</intent-filter>
</receiver>
<receiver android:name=”.MyBroadcastReceiver2″>
<intent-filter android:priority=”1000″>
<action android:name=”android.1804.receiver”/>
</intent-filter>
</receiver>
第三步:发送广播
publicvoid sendBroadcast(View view) {
Intent intent=new Intent();
intent.setAction(“android.1804.receiver”);
intent.putExtra(“msg2″,”端午节快乐”);
sendOrderedBroadcast(intent,null);
}
粘性广播
第二步:注册BroadcastReceiver
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receiver);
sendStickyBroadcast(newIntent(“android.1804.receiver.sticky”));
}
public void sendStickyBroadcast(Viewview) {
MyBroadcastReceivermyBroadcastReceiver = new MyBroadcastReceiver();
IntentFilterintentFilter = new IntentFilter(“android.1804.receiver.sticky”);
registerReceiver(myBroadcastReceiver,intentFilter);
}