说说在 Android 中如何发送自定义广播
2018-03-01 16:12
344 查看
1 发送标准广播
先新建一个广播接收器用于来接收自定义的广播:public class MyReceiver extends BroadcastReceiver { public MyReceiver() { } @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,"接收到自定义的广播",Toast.LENGTH_SHORT).show(); } }
然后修改 AndroidManifest.xml 文件,注册要监听的自定义广播(假设是 net.deniro.android.MY_BROADCAST):
<receiver android:name=".MyReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="net.deniro.android.MY_BROADCAST"/> </intent-filter> </receiver>
接着在主布局文件中,添加一个按钮作为发送广播的触发点:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context< 4000 /span>="net.deniro.android.mybroadcastreceiver.MainActivity"> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="发送广播"></Button> </RelativeLayout>
最后修改主活动的代码:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendBroadcast(new Intent("net.deniro.android.MY_BROADCAST")); } }); } }
这里通过 sendBroadcast() 方法来发送广播,这样所有监听这个广播的接收器就会收到消息。
2 发送有序广播
广播是一种可以跨进程进行通信的方式,因此我们在应用程序中发出的广播,其他的应用程序也可以收到。我们新建一个项目,然后再自定义一个广播接收器:
public class AnotherReceiver extends BroadcastReceiver { public AnotherReceiver() { } @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,"接收到自定义的广播(AnotherReceiver)",Toast.LENGTH_SHORT).show(); } }
代码与之前的接收器代码类似,只是弹出的消息内容不同。
接着在 AndroidManifest.xml 文件中为接收器注册要监听的消息:
<receiver android:name=".AnotherReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="net.deniro.android.MY_BROADCAST" /> </intent-filter> </receiver>
最后把这个项目安装到模拟器上,然后重新回到上一个项目 app,点击【发送广播】按钮,这时就会弹两次提示信息。
现在我们试试发送有序广播。 回到前面的项目,修改 Activity 中的代码:
sendOrderedBroadcast((new Intent("net.deniro.android.MY_BROADCAST")),null);
sendOrderedBroadcast() 方法接收两个参数,第一个是 Intent,第二个是与权限相关的字符串,这里我们传入 null。
通过 AndroidManifest.xml 文件中的
android:priority,可以设定广播接收器的先后顺序,我们为第一个接收器设定
android:priority:
<receiver android:name=".MyReceiver" android:enabled="true" android:exported="true"> <intent-filter android:priority="100"> <action android:name="net.deniro.android.MY_BROADCAST" /> </intent-filter> </receiver>
android:priority 的值越大,优先级就越高。
调用 abortBroadcast() 方法,就可以截断这条广播啦。
相关文章推荐
- Android 第二十课 广播机制(大喇叭)----发送自定义广播(包括发送标准广播和发送有序广播)
- android 发送自定义广播以及接收自定义广播
- 自定义android手机的secret_code的广播发送(拨号盘输入触发);
- Android代码片段——启动内置APK和动态发送接收自定义广播
- Android 发送自定义广播
- android中如何发送一个广播
- Android之BroadcastReceiver(三):发送自定义广播
- android中如何发送一个广播
- android: 发送自定义广播
- Android自定义发送本地广播
- Android中如何做到自定义的广播只能有指定的app接收
- Android—启动内置APK和动态发送接收自定义广播
- Android-自定义发送/接收广播(BroadcastReceiver)
- MIUI7,Android版本5.0.2,一个程序发送自定义广播,另一个程序没有接收到
- Android自定义发送无序广播
- android中如何发送一个广播
- Android自定义发送有序广播
- android#boardcast#发送自定义广播
- Android笔记(二十五)发送自定义广播和本地广播
- Android中如何做到自定义的广播只能有指定的app接收