Android 广播接受者

广播也是通过intent来传递的。

广播分为有序广播和标准广播。

标准广播是发送广播后,所有的广播接受者都可以去接收。

有序广播是发送广播后,由高优先级的先接收广播,处理后再往后广播,同时高优先级的接受者可以中断广播。

广播注册可以分为动态注册和静态注册。下面就先将静态注册。静态注册是新建广播接收者时,是通过new----->other------->Brodcast Receiver来实现的。AS会自动帮我们在Manifext.xml里注册好,我们只需要添加intent-filter及在里面加入action即可。

下面的例子是静态注入,发送一条标准广播,然后接收。

1、MainActivity

package com.yuanlp.sendbroadcast;

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

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void click(View view){
        Intent intent=new Intent("com.yuanlp.sendBroadcast.MY_BROADCAST"); //设置intent的action
        sendBroadcast(intent);  //发送广播
    }
}

2、 activity_main.xml里

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.yuanlp.sendbroadcast.MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="发送广播"
        tools:layout_editor_absoluteX="137dp"
        tools:layout_editor_absoluteY="136dp"/>
</android.support.constraint.ConstraintLayout>

3、MyReceiver

package com.yuanlp.sendbroadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"接收到广播",Toast.LENGTH_SHORT).show();
    }
}

4、Manifext.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.yuanlp.sendbroadcast">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.yuanlp.sendBroadcast.MY_BROADCAST"></action>
            </intent-filter>
        </receiver>
    </application>

</manifest>

运行程序后,在点击按钮后,自定义的广播 接受者会受到广播,并弹出toast

时间: 2024-12-14 21:59:01

Android 广播接受者的相关文章

android 注册广播接受者

韩梦飞沙  韩亚飞  [email protected]  yue31313  han_meng_fei_sha 动态注册 静态注册 动态注册是 通过java代码,注册. 静态注册 是xml清单文件中 注册. 静态注册的广播接受者 是  常驻的.  也就是说,当应用程序关闭之后,当有信息广播时, 程序会被系统调用 自动运行. 动态注册的,用什么注册的,当它结束后  接受者也就没有了. 动态注册的优先级比静态的高.

Android广播机制(转)

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

android 广播的插件化

------本文转载自 Android插件化原理解析--广播的管理 这一系列的文章实在是写的好! 1, 概述 为了实现Activity的插件化我们付出了相当多的努力:那么Android系统的 其他组件,比如BroadcastReceiver,Service还有ContentProvider,它们又该如何处理呢? 相比Activity,BroadcastReceiver要简单很多--广播的生命周期相当简单:如果希望插件能够支持广播,这意味着什么? 回想一下我们日常开发的时候是如何使用Broadca

Android08_广播接受者_服务

1 广播接受者  广播的发送是通过intent开启的 需要被接收的广播:电量不足,sd卡被移除,电话移除,短信到来等等 1.1 监视sd卡的状态 需求:监视sd卡的状态,并提示用户受到影响的功能. 步骤:①买个收音机 创建一个类,继承BroadcastReceiver类(可以看做当一个类继承了该类,如果sd卡发生状态改变会接收到一条信息?) ②装上电池 在清单文件中配置 <receiver>标签(接受者) 配置属性name=”全包名”一定要配置到对应的类,不然会报错 ③调到对应频道 在rece

Android 广播&amp;服务

BroadCastReceiver 广播接收者,Android四大组件之一 用于接收广播Intent的,广播Intent的发送是通过调用sendBroadCast/sendOrderBroadCast来实现的,通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收. 广播 Android中系统通过广播发布信息,只需要注册广播接受者 Android系统运行过程中可能产生很多事件,当这些事件发生时,系统希望通知到其他应用知道这个事件,所以会发出广播. 如:开机.电量改变.收发短信.

Android总结篇系列:Android广播机制

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

android广播的应用

一丶 broadcast receiver 广播接收者 注:android的四大组件: *activity用户交互的界面 *content provider 暴露应用程序隐私的数据给别的应用程序* broadcast receiver 广播接收者* service 后台的服务 >Android手机里面的广播接受者>系统电量不足,电池充满,插上充电器,sd卡被拔出,sd卡插上,拨出电话,接收到了短信,开机完毕,屏幕锁定,屏幕解锁>在Android操作系统里面有很多的系统事件,Google工

广播接受者拦截短信和播出电话

需要接受信息和播出电话的权限 广播接受者需要在配置清单里面注册,并且可以设置优先级和接收者关心的事件 广播拦截下来之后可以进行传递的信息的修改或者直接终止掉广播,终止了之后就相当于没有这个事情发生 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package=&

Android广播机制

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通