Android广播的发送和接收

本文详细介绍了在Android中如何发送标准广播和有序广播,包括创建Intent、使用sendBroadcast方法,以及如何编写和注册BroadcastReceiver以接收并处理广播。同时涵盖了接收器的注册与取消注册过程。
摘要由CSDN通过智能技术生成

发送广播

标准广播

标准广播的发送很简单,首先需要创建一个intent来确定发送的广播内容,然后调用sendBroadcast方法进行发送就可以了。

val intent=Intent("com.example.broadcast.OTO")
intent.setPackage(packageName)
sendBroadcast(intent)

有序广播

发送有序广播,有序广播需要在标准广播的基础上加个参数,这个增加的null代表了接收的权限。

val intent=Intent("com.example.broadcast.OTO")
intent.setPackage(packageName)
sendBroadcast(intent,null)

接收广播

编写接收器

接收广播时需要注册广播的接收器,还需要进行接收器的注册和取消注册。接收器中作出对收到广播后的处理,重写onReceive方法,这里弹出一个toast表示收到广播。

inner class MyBroadcast():BroadcastReceiver(){
        override fun onReceive(p0: Context?, p1: Intent?) {
            Toast.makeText(this@MainActivity, "receive the intent named OTO", Toast.LENGTH_SHORT).show()
        }
}

注册接收器

想要接收到广播,首先需要注册接收器,需要在界面初始化的时候进行注册,在注册时首先需要创建一个intentFilter来确定需要接收的广播,然后进行注册,在界面销毁时进行取消注册。

    val receiver=MyBroadcast()

    override fun initData() {
        val intent=IntentFilter()
        intent.addAction("com.example.broadcast.OTO")
        registerReceiver(receiver,intent)
        viewBinding?.button?.setOnClickListener(this)
    }
    override fun onDestroy() {
        unregisterReceiver(receiver)
        super.onDestroy()
    }

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android中,可以通过BroadcastReceiver来接收广播消息,并且通过Intent启动新的Activity来调用UI界面。 首先,需要创建一个继承自BroadcastReceiver的类,用于接收广播消息。在onReceive()方法中,可以处理接收到的广播消息,例如启动新的Activity。 接下来,在需要发送广播消息的地方,使用Intent来创建一个新的广播消息,并使用sendBroadcast()方法发送出去。 在接收广播消息后,可以使用Intent来启动一个新的Activity,并将需要传递给该Activity的数据通过Intent.putExtra()方法添加到Intent中。最后,使用startActivity()方法启动该Activity。 以下是示例代码: 创建BroadcastReceiver类: ``` public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 接收广播消息后,启动新的Activity Intent newIntent = new Intent(context, MyActivity.class); newIntent.putExtra("data", "Hello World"); context.startActivity(newIntent); } } ``` 发送广播消息: ``` Intent intent = new Intent("com.example.mybroadcast"); sendBroadcast(intent); ``` 注意:需要在AndroidManifest.xml文件中为BroadcastReceiver和Activity注册相应的标识符。例如: ``` <receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="com.example.mybroadcast" /> </intent-filter> </receiver> <activity android:name=".MyActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值