• 安卓学习:广播


    一、发送与接收广播案例

    1、创建安卓案例【SendReceiveBroadcast】

    在这里插入图片描述

    2、编写主布局资源文件
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical"
        android:padding="20dp"
        tools:context=".MainActivity">
    
        <EditText
            android:id="@+id/edtMessage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/input_message"
            android:singleLine="true"
            android:textSize="20sp" />
    
        <Button
            android:id="@+id/btnSendBroadcast"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="doSendBroadcast"
            android:text="@string/send_broadcast"
            android:textSize="20sp" />
    </LinearLayout>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    3、编写字符串资源文件strings.xml
    <resources>
        <string name="app_name">发送与接收广播</string>
        <string name="input_message">请输入要广播的消息</string>
        <string name="send_broadcast">发送广播的消息</string>
    </resources>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    4、创建自定义广播接收者

    在这里插入图片描述

    package net.xxr.sendreceivebroadcast;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;
    
    /**
     * 功能:自定义广播接收者
     * 作者:小小榕
     * 日期:2020年12月30日
     */
    public class CustomReceiver extends BroadcastReceiver {
    
        private final String TAG = "send_receive_broadcast"; // 标记
        private final String INTENT_ACTION_SEND_MESSAGE = "net.xxr.intent.action.SEND_MESSAGE"; // 广播频道
    
        @Override
        public void onReceive(Context context, Intent intent) {
            // 按照频道获取广播信息
            if (intent.getAction().equals(INTENT_ACTION_SEND_MESSAGE)) {
                // 获取广播信息
                String message = intent.getStringExtra("message");
                // 输出广播信息
                Log.d(TAG, message);
            }
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    5、编写主界面类
    package net.xxr.sendreceivebroadcast;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.EditText;
    
    import net.xxr.sendreceivebroadcast.CustomReceiver;
    
    import java.util.PrimitiveIterator;
    
    public class MainActivity extends AppCompatActivity {
        private final String TAG = "send_receive_broadcast";
        private final String INTENT_SEND_MESSAGE = "net.xxr.intent.action.SEND_MESSAGE";
        private EditText editMessage;
        private int broadcastCount;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            editMessage = findViewById(R.id.edtMessage);
    
            CustomReceiver receiver = new CustomReceiver();
            IntentFilter filter = new IntentFilter();
            filter.addAction(INTENT_SEND_MESSAGE);
            registerReceiver(receiver, filter);
    
    
        }
        /**
         * 发布广播
         */
        public void doSendBroadcast(View view) {
            broadcastCount++;
            String message = editMessage.getText().toString();
            Intent intent = new Intent();
            intent.setAction(INTENT_SEND_MESSAGE);
            intent.putExtra("message","第" + broadcastCount + "次广播信息:" + message);
            sendBroadcast(intent);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    6、采用动态方式注册广播接收者
    • 编写项目清单文件对广播接收者的注册
      在这里插入图片描述
    查看运行结果

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    【andriod】设备APP开发之各种细节部署和操作
    基于MATLAB的无人机路径规划设计
    【MySQL】索引特性
    第 117 场 LeetCode 双周赛题解
    Redis 的相关基础知识
    一分钟彻底掌握Java的Object类与java.lang包
    项目通用Makefile的编写(包含Makefile.build文件分析)
    【Flink CDC(一)】实现mysql整表与增量读取
    【FME实战教程】002:FME完美实现CAD数据转shp案例教程(以三调土地利用现状数据为例)
    【目标检测】Generalized Focal Loss V1
  • 原文地址:https://blog.csdn.net/X_Serendipity/article/details/127506249