Android广播应用

本文介绍了Android中的自定义广播和本地广播的使用。在自定义广播部分,展示了如何发送带有附加数据的广播,以及创建BroadcastReceiver接收并打印这些数据。在本地广播部分,讲解了发送本地广播并使用BroadcastReceiver通过Toast显示接收数据的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

1、 自定义广播:

**

(1) 发送一个自定义广播,在intent中附加数据(putExtra方法),key为”extraKey”,value为”CustomValue”

(2) 新创建一个项目,创建BroadcastReceiver子类,接收1中发出的自定义广播,并将附加的数据用log.d打印出来

步骤:新建项目BroadcastTest,在包名处右键新建广播接收器,命名为MyBroadcastReceiver,勾选Exported和Enabled
运行截图:
在这里插入图片描述

代码:

MainActivity.java



public class MainActivity extends AppCompatActivity
{



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        Button
button1=(Button)findViewById(R.id.button);

        button1.setOnClickListener(new View.OnClickListener(){

            public void onClick(View
v){

                Intent intent=new Intent();

                intent.setAction("com.example.lenovo.broadcasttest.MY_BROADCAST");

                intent.putExtra("extraKey","CustomValue");

                sendBroadcast(intent);

            }

        });

    }

}


activity_main.xml



<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="com.example.lenovo.broadcasttest.MainActivity">



    <Button

        android:id="@+id/button"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="自定义广播"/>

</RelativeLayout>

MyBroadCastReceiver.java



<receiver

    android:name=".MyBroadcastReceiver"

    android:enabled="true"

    android:exported="true">

    <intent-filter>

        <action android:name="com.example.lenovo.broadcasttest.MY_BROADCAST"/>

    </intent-filter>

</receiver>

**

2、 本地广播:

**

(1)
发送一个本地广播,在intent中附加数据(putExtra方法),key为” extraKey”,value为”LocalValue”

(2)
创建一个BroadcastReceiver子类,接收广播并以Toast显示接收到的值

运行截图:
在这里插入图片描述
代码:

MainActivity.java



public class MainActivity extends AppCompatActivity
{

    private IntentFilter
intentFilter;

    private LocalReceiver
localReceiver;

    private LocalBroadcastManager
localBroadcastManager;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);        localBroadcastManager=LocalBroadcastManager.getInstance(this);

        Button
button2=(Button)findViewById(R.id.button);

        button2.setOnClickListener(new View.OnClickListener(){

            public void onClick(View
v){

                Intent intent=new Intent();

                intent.setAction("com.example.lenovo.broadcasttest.LOCAL_BROADCAST");

                intent.putExtra("extraKey","LocalValue");

                localBroadcastManager.sendBroadcast(intent);

            }

        });

        intentFilter=new IntentFilter();

        intentFilter.addAction("com.example.lenovo.broadcasttest.LOCAL_BROADCAST");

        localReceiver=new LocalReceiver();

        localBroadcastManager.registerReceiver(localReceiver,intentFilter);

    }

    protected void onDestory(){

         super.onDestroy();

         localBroadcastManager.unregisterReceiver(localReceiver);

    }

    class LocalReceiver
extends BroadcastReceiver{

        public void onReceive(Context
context,Intent intent){

            Toast.makeText(context,"received local broadcast",Toast.LENGTH_SHORT).show();

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值