Android BroadcastReceiver 发送广播

在前一章节中我们学习了 BroadcastReceiver 的基础知识和如何接收系统的广播

我们不能老这么被动是吧,总点主动的发送点东西给别人,那么,我们就来学习如何发送广播吧

BroadcastReceiver 发送广播

发送广播前,要先定义一个接收器,不然发了谁收

要先确定目标,然后再告白 ~(●'◡'●)~

发送广播的流程

自定义一个 BroadcastReceiver ,重写 onReceive() 方法,然后注册下广播

  1. 发送标准广播 sendBroadcast(intent);
  2. 发送有序广播 `sendOrderedBroadcast(intent,null)

    可以在 AndroidManifest.xml 中的 <Intent-filter> 中通过 android:priority="100" 设置优先级,值越大优先级越高,越先收到广播,优先级可选范围 -1000 - 1000

  3. 可以调用 abortBroadcast() 截断广播,让其不再继续传递

范例

我们写一个 demo 自发自收,自己向自己告白吧....


  1. 创建一个 空的 Android 项目 cn.twle.android.SendBroadcast

  2. 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();
        }
    }
    
  3. 修改 AndroidManifest.xml 注册 MsBroadcastReceiver ,写上 Intent-filter

    <receiver android:name=".MsBroadcastReceiver">
        <intent-filter>
            <action android:name="cn.twle.android.sendbroadcast.MS_BROADCAST"/>
        </intent-filter>
    </receiver>
    
  4. 然后修改 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>
    
  5. 修改 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"));
                }
            });
        }
    }
    

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.