实现一个自定义广播,我们还是需要一个广播接收器进行接受广播消息,其实整个过程就是一个广播的匹配,只不过,我们多了一个广播发送的功能。(这里只是实现了一个静态注册,动态的在我的上一篇或者下一篇都有)
写一个Receiver接收广播:
public class MyselfReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Received from MyselfBroadcast", Toast.LENGTH_SHORT).show();
}
}
在配置文件中将其注册,并设置他的接收的广播信息为"com.example.administrator.happyandroid.MYSELFBROADCAST"
<receiver
android:name=".Receiver.MyselfReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.administrator.happyandroid.MYSELFBROADCAST"/>
</intent-filter>
</receiver>
之后我们新建一个Activity来进行发送广播(layout只是实现了一个button,略):
public class MyselfBroadcastActivity extends Activity {
private Button my_broad_btn;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myself_broadcast_activity);
my_broad_btn = findViewById(R.id.myself_broadcast_btn);
my_broad_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.administrator.happyandroid.MYSELFBROADCAST");
sendBroadcast(intent);
}
});
}
}
对于有序广播(就是按优先级高低依次接收广播,如果前面的应用截断广播后面的收不到了,比如你想自己实现一个短信功能,为了不接收两次,你可以使用有序广播),发送有序广播的方法为:
//第二个参数与权限相关
sendOrderedBroadcast(intent,null);