Android广播的使用
静态广播使用一共三步
- 第一步,定义一个CustomReceiver广播接收者。
public class CustomReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "onReceive: this is Broadcast");
Toast.makeText(context, intent.getStringExtra("message"), Toast.LENGTH_SHORT).show();
}
}
- 第二步,在xml文件里面声明我们定义的CustomReceiver,因为静态注册不会自动帮我们声明,需要自己手动声明,写在application标签里面。
<!--第二步:静态注册广播接收者-->
<receiver android:name=".CustomReceiver"
android:enabled="true"
android:exported="true"
android:permission="TODO"
tools:ignore="ExportedReceiver">
<intent-filter>
<action android:name="com.foryou.wk12.MY_BROADCAST"/>
</intent-filter>
</receiver>
- 第三步,我们在MainActivity里面onCreate方法里面进行发送广播。
//静态发送广播
public void sendAction1(View view) {
Intent intent = new Intent("com.foryou.wk12.MY_BROADCAST");
Log.i("TAG", "sendAction1: ");
intent.putExtra("message","你妈喊你回家吃饭了");
//android 8.0版本以上增加范围限制
intent.setPackage(getPackageName());
sendBroadcast(intent);
}
动态态广播使用
动态广播是平常开发里面使用最多的,相对静态广播使用更加灵活也更加方便,不需要我们去xml文件里面声明。
- 第一步,创建广播接收者Receiver2 。
public class Receiver2 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, intent.getStringExtra("message"), Toast.LENGTH_SHORT).show();
}
}
- 第二步,在MainActivity里面的onCreate方法里面进行注册。
//动态注册广播接收者
Receiver2 receiver2 = new Receiver2();
IntentFilter intentFilter = new IntentFilter("com.foryou.wk12.MY_BROADCAST2");
registerReceiver(receiver2,intentFilter);
- 第三步,在MainActivity里面的onCreate方法里面进行发送广播。
//动态发送广播
public void sendAction2(View view) {
Intent intent = new Intent("com.foryou.wk12.MY_BROADCAST2");
intent.putExtra("message","你妈喊你回家吃饭了");
//android 8.0版本以上增加范围限制
intent.setPackage(getPackageName());
sendBroadcast(intent);
}