Android:发送广播

本文介绍了在Android中如何创建和发送广播。首先,广播是安卓四大组件之一,需要注册才能使用。创建广播包括创建BroadcastReceiver类并可在manifest或代码中注册。接着,详细展示了如何通过代码创建意图并发送广播,包括发送单个广播和同时发送多个广播的方法。

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

相关知识点:

安卓四大组件:activity 广播 服务Service 内容提供者 ——都需要注册

创建广播

1.创建一个类 继承BroadcastReceiver
2.想使用广播 注册
a.manifest 注册
<receiver android:name=".MyBroadcastOne"></receiver>
2.发送广播
创建意图:

  Intent intent = new Intent(MainActivity.this,MyBroadcastOne.class);

发送:

 sendBroadcast(intent);

b.通过java代码去注册

//注册广播
    MyBroadcastOne myBroadcastOne = new MyBroadcastOne();
    //过滤电池电量低
    IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(myBroadcastOne,intentFilter);

通过java代码注册的广播不需要手动去发送

        取消广播:unregisterReceiver(myBroadcastOne);
发送一个广播,代码如下:

MyBroadcastOne 代码:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * Created by sq on 2020/2/11.
 */
public class MyBroadcastOne extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("msg","123");
        int level=intent.getIntExtra("level",0);
        Log.i("msg"," "+level);
    }
}

Main2Activity 代码:

import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Main2Activity extends AppCompatActivity {
    private Button button;
    MyBroadcastOne myBroadcastOne;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        button= (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(Main2Activity.this,MyBroadcastOne.class);
                //发送广播
                sendBroadcast(intent);
            }
        });
    }

    @Override
    protected void onResume() {
         myBroadcastOne=new MyBroadcastOne();
        //过滤电池电量低
        IntentFilter intentFilter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(myBroadcastOne,intentFilter);
       super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();

        unregisterReceiver(myBroadcastOne);
    }
}

3.同时发送多个广播
在xml中注册 给广播设置action name属性值一样
在这里插入图片描述
发送广播之前,new 空的意图,给意图设置action
在这里插入图片描述

发送多个广播,代码如下:

MyBroadcastTwo代码

 import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * Created by sq on 2020/2/11.
 */
public class MyBroadcastTwo extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("msg","2");
    }
}

MyBroadcastThree代码

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * Created by sq on 2020/2/11.
 */
public class MyBroadcastThree extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("msg","3");
    }
}

Main2Activity代码

public class Main2Activity extends AppCompatActivity {
    private Button button;
    MyBroadcastOne myBroadcastOne;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        button= (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                //发送广播
                intent.setAction("a");
                sendBroadcast(intent);
            }
        });
    }

    @Override
    protected void onResume() {
         myBroadcastOne=new MyBroadcastOne();
        //过滤电池电量低
        IntentFilter intentFilter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(myBroadcastOne,intentFilter);
       super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();

        unregisterReceiver(myBroadcastOne);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值