Android BroadcastReceiver 发送广播
在前一章节中我们学习了 BroadcastReceiver
的基础知识和如何接收系统的广播
我们不能老这么被动是吧,总点主动的发送点东西给别人,那么,我们就来学习如何发送广播吧
BroadcastReceiver 发送广播
发送广播前,要先定义一个接收器,不然发了谁收
要先确定目标,然后再告白 ~(●'◡'●)~
发送广播的流程
自定义一个 BroadcastReceiver
,重写 onReceive()
方法,然后注册下广播
- 发送标准广播
sendBroadcast(intent);
-
发送有序广播 `sendOrderedBroadcast(intent,null)
可以在
AndroidManifest.xml
中的<Intent-filter>
中通过android:priority="100"
设置优先级,值越大优先级越高,越先收到广播,优先级可选范围-1000 - 1000
-
可以调用
abortBroadcast()
截断广播,让其不再继续传递
范例
我们写一个 demo 自发自收,自己向自己告白吧....
-
创建一个 空的 Android 项目
cn.twle.android.SendBroadcast
-
在
MainActivity.java
目录下新建一个广播接收者MsBroadcastReceiver.java
package cn.twle.android.sendbroadcast; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class MsBroadcastReceiver extends BroadcastReceiver { private final String ACTION_BOOT = "cn.twle.android.sendbroadcast.MS_BROADCAST"; @Override public void onReceive(Context context, Intent intent) { if( ACTION_BOOT.equals(intent.getAction())) Toast.makeText(context, "收到告白啦~",Toast.LENGTH_LONG).show(); } }
-
修改
AndroidManifest.xml
注册MsBroadcastReceiver
,写上 Intent-filter<receiver android:name=".MsBroadcastReceiver"> <intent-filter> <action android:name="cn.twle.android.sendbroadcast.MS_BROADCAST"/> </intent-filter> </receiver>
-
然后修改
activity_main.xml
添加一个按钮 发送告白<?xml version="1.0" encoding="utf-8" ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" > <Button android:text="发送告白" android:id="@+id/btn_send" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
-
修改
MainActivity.java
完成广播发送package cn.twle.android.sendbroadcast; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn_send = (Button) findViewById(R.id.btn_send); btn_send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendBroadcast(new Intent("cn.twle.android.sendbroadcast.MS_BROADCAST")); } }); } }