Android BroadcastReceiver广播简单使用

本文实例为大家分享了Android BroadcastReceiver广播使用的具体代码,供大家参考,具体内容如下

静态的BroadcastReceiver

主要代码

public class MyReceiver extends BroadcastReceiver {
    @Override
    //接受广播时回调
    public void onReceive(Context context, Intent intent) {
        //接收广播
      if(intent != null){
          //接收到是什么广播
          String action = intent.getAction();
          Log.e("测试",action);
      }
    }
}

在AndroidManifest.xml里设置权限

<receiver android:name=".MyReceiver">
            <!--接受广播类型-->
            <intent-filter>
                <!--开机广播-->
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <!--电量低广播-->
                <action android:name="android.intent.action.BATTERY_LOW"/>
                <!--应用卸载-->
                <action android:name="android.intent.action.PACKAGE_REMOVED"/>
                <!--应用安装-->
                <action android:name="android.intent.action.PACKAGE_INSTALL"/>
                <!--数据类型-->
                <data android:scheme="package"/>
            </intent-filter>
</receiver>

动态的BroadcastReceiver

主要代码

1.设置一个Java类继承BroadcastReceiver

public class MyReceiverD extends BroadcastReceiver {

    @Override
    //接受广播时回调(不能做耗时操作,必须开子线程)
    public void onReceive(Context context, Intent intent) {
            //接收广播
            if(intent != null){
                //接收到是什么广播
                String action = intent.getAction();
                Log.e("测试",action);
            }
        }
    }

在AndroidManifest.xml里设置权限

<!--动态注册-->
        <receiver android:name=".MyReceiverD">
        //因为是动态设置就不需要在里面设置别的了
</receiver>

3.MainActivity

//新建一个广播接收器 动态广播
        receiverD = new MyReceiverD();
        //接收那种广播
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        intentFilter.addDataScheme("package");
        intentFilter.addAction(Intent.ACTION_BATTERY_LOW);
        //注册广播接收器
        registerReceiver(receiverD,intentFilter);

        protected void onDestroy() {
        super.onDestroy();
        //取消注册关闭接收器
        if (receiverD != null){
            unregisterReceiver(receiverD);
        }
    }

随便卸载一个应用控制台就会显示

自定义的BroadcastReceiver

1.还是准备一个Java继承BroadcastReceiver

public class MyReceiverD_zdy extends BroadcastReceiver {
    private TextView txt;
    public MyReceiverD_zdy(TextView txt) {
        this.txt = txt;
    }
    public MyReceiverD_zdy() {

    }

    @Override
    public void onReceive(Context context, Intent intent) {
        //接收广播
        if(intent != null){
            //接收到是什么广播
            String action = intent.getAction();
            Log.e("测试",action);
            //判断是什么广播,是否是自己自定义的广播
            if (TextUtils.equals(action,MainActivity.MY_ACTION)){
                //获取广播携带的数据
                String content = intent.getStringExtra(MainActivity.BROADCAST_CONTENT);
               if (txt != null){
               txt.setText("接收到的action是:"+action+"\n接收到的内容是"+content);
               }
            }
        }
    }
}

2.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".MainActivity"
    android:orientation="vertical"
    android:padding="16dp"
    >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="请输入发送内容:"/>

    <EditText
        android:id="@+id/etxt"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginTop="16dp"
        />

    <Button
        android:id="@+id/bnt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_gravity="center_horizontal"
        android:text="发送广播"/>

    <TextView
        android:id="@+id/txt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="收到的内容:"/>

</LinearLayout>

3.MainActivity

public class MainActivity extends AppCompatActivity {
    private MyReceiverD receiverD;
    private MyReceiverD_zdy receiverDZdy;
    private Button bnt;
    private EditText etxt;
    private TextView txt;
    public static final String MY_ACTION = "com.example.my";
    public static final String BROADCAST_CONTENT = "cs";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();

        //设置应用主页面的标题
        setTitle(getPackageName());
       //新建广播接收器
        receiverDZdy = new MyReceiverD_zdy(txt);
        //注册广播接收器

        //为广播添加Action
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("android.intent.action,PACKAGE_REMOVED");
        //自定义
        intentFilter.addAction(MY_ACTION);
        //注册广播接收器
        registerReceiver(receiverDZdy,intentFilter);
        bnt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //新建广播 自定义
                Intent intent = new Intent(MY_ACTION);
                //携带数据
                intent.putExtra(BROADCAST_CONTENT,etxt.getText().toString());

                //发送广播
                sendBroadcast(intent);
            }
        });
    }
    protected void onDestroy() {
        super.onDestroy();
        //取消注册关闭接收器
        if (receiverDZdy != null){
            unregisterReceiver(receiverDZdy);
        }
    }

    private void initView() {
        //初始化
        etxt = (EditText) findViewById(R.id.etxt);
        txt =(TextView) findViewById(R.id.txt);
        bnt =(Button) findViewById(R.id.bnt);
    }
}

样式

当然也可以实现不同app接受发送的广播内容
复制代码换app名字,当前app发送的广播新的app也可以接收到

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android使用BroadcastReceiver监听网络连接状态的改变

    只需要实现下面2段代码即可实现对网络连接状态的监听,千万别忘了在Manifest.xml里面添加网络访问权限哦. 1.定义广播接收器 NetState.java package huaxa.it.map.net; import huaxa.it.map.demo.MapDemo; import com.baidu.mapapi.map.MapView; import android.content.BroadcastReceiver; import android.content.Context

  • Android中BroadcastReceiver案例讲解

    前言 我们在注册一款App的时候,如果注册成功的话,那么我们就直接跳过登陆界面,直接进入主界面,那么我们现在就通过BroadcastReceiver来实现这个功能: (1)注册界面RegisterActivity.java,这里跳过了一些基本的操作,直接调用的是注册方法signUp()方法: btn_reg.signUp(RegisterActivity.this, new SaveListener() { @Override public void onSuccess() { progress

  • Android四大组件之BroadcastReceiver详解

    BroadcastReceiver(广播接收器),在Android开发中,BroadcastReceiver的应用场景非常多,属于Android四大组件之一. Android 广播分为两个角色:广播发送者.广播接收者 一. 作用 用于监听 / 接收 应用发出的广播消息,并做出响应 应用场景: 不同组件之间通信(包括应用内 / 不同应用之间) 与 Android 系统在特定情况下的通信(如当电话呼入时.网络可用时) 多线程通信 二.实现原理 Android中的广播使用了设计模式中的观察者模式:基于

  • Android Broadcast 和 BroadcastReceiver的权限限制方式

    在Android应用开发中,有时会遇到以下两种情况, 1. 一些敏感的广播并不想让第三方的应用收到 : 2. 要限制自己的Receiver接收某广播来源,避免被恶意的同样的ACTION的广播所干扰. 在这些场景下就需要用到广播的权限限制. 第一种场景: 谁有权收我的广播? 在这种情况下,可以在自己应用发广播时添加参数声明Receiver所需的权限. 首先,在Androidmanifest.xml中定义新的权限RECV_XXX,例如: <permission android:name = "

  • Android BroadcastReceiver接收收到短信的广播

    一.知识介绍 1.broadcastReceiver是广播接受者,四大组件之一. 2.Android中内置了很多系统级别的广播,可以在应用程序中得到各种系统的状态信息. 3.使用场景: ①当手机没有电时,会告知用户"电量低"的广播信息.可以做到正在使用的app就会接收到这个广播消息,如果是游戏可能是提醒保存数据,如果是正在使用的工作软件,可能提醒接上电源. [提示]对于某某程序来说,可以选择接收这一消息也可以选择不接收这个消息. ②手机的storage不够了,提示你清理空间,否则应用程

  • Android BroadcastReceiver实现网络状态实时监听

    前言:最近公司项目重构,为了提高用户的体验,项目中要求添加当前网络状态的实时监听,以便在无网络状态时给用户友好的提醒并修改UI界面.本文将介绍使用四大组件之一的BroadcastReceiver实现全局的网络状态监听,使用动态方式注册. BroadcastReceiver的注册方式: (1)动态注册:即在代码中使用registerReceiver()方法进行注册,动态注册需要在onPause或onDestory方法中反注册,不然会出现泄露. (2)静态注册:在清单文件的application节点

  • Android中BroadcastReceiver实现短信关键字自动回复功能

    前言:因公司业务需要,需要一台手机专门回复客户订购的套餐的短信,之前一直是人工手动回复,但比较麻烦且回复可能不及时,于是项目经理就让实现根据短信的关键字自动回复功能. 实现手机短信监听的方式有两种:一是通过ContentObserver观察者实现监听,另一种就是通过广播即BroadcastReceiver实现短信监听,文章中通过使用BroadcastReceiver实现有新短信的及时监听及包含设定的关键字时自动回复. 效果图: 清单文件添加权限: <uses-permission android

  • Android Broadcast原理分析之registerReceiver详解

    目录 1. BroadcastReceiver概述 2. BroadcastReceiver分类 3. registerReceiver流程图 4. 源码解析 4.1 ContextImpl.registerReceiverInternal 4.2 LoadedApk.getReceiverDispatcher 4.3 ActivityManagerService.registerReceiver 5. 总结 1. BroadcastReceiver概述 广播作为四大组件之一,在平时开发过程中会

  • Android BroadcastReceiver广播简单使用

    本文实例为大家分享了Android BroadcastReceiver广播使用的具体代码,供大家参考,具体内容如下 静态的BroadcastReceiver 主要代码 public class MyReceiver extends BroadcastReceiver { @Override //接受广播时回调 public void onReceive(Context context, Intent intent) { //接收广播 if(intent != null){ //接收到是什么广播

  • Android BroadcastReceiver广播机制概述

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

  • Android BroadcastReceiver广播注册方式总结

    Android:BroadcastReceiver注册的方式分为两种: 静态注册 动态注册 1. 静态注册 在AndroidManifest.xml里通过标签声明 属性说明: <receiver android:enabled=["true" | "false"] //此broadcastReceiver能否接收其他App的发出的广播 //默认值是由receiver中有无intent-filter决定的:如果有intent-filter,默认值为true,否则

  • Android基于广播事件机制实现简单定时提醒功能代码

    本文实例讲述了Android基于广播事件机制实现简单定时提醒功能代码.分享给大家供大家参考,具体如下: 1.Android广播事件机制 Android的广播事件处理类似于普通的事件处理.不同之处在于,后者是靠点击按钮这样的组件行为来触发,而前者是通过构建Intent对象,使用sentBroadcast()方法来发起一个系统级别的事件广播来传递信息.广播事件的接收是通过定义一个继承Broadcast Receiver的类实现的,继承该类后覆盖其onReceive()方法,在该方法中响应事件.And

  • Android studio 广播的简单使用代码详解

    1.在布局文件里面加入按钮,等会发送广播 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="htt

  • Android编程四大组件之BroadcastReceiver(广播接收者)用法实例

    本文实例讲述了Android编程四大组件之BroadcastReceiver(广播接收者)用法.分享给大家供大家参考,具体如下: 这里介绍如何创建广播.如何发送一个无序广播和有序广播.以及监听短信以及监听呼出电话(当我们发短信和打电话,系统就会发一个广播,我们可以拦截此广播进行监听短信以及监听呼出电话). 定义广播接收者 1.定义类继承BroadcastReceiver,重写onReceive方法 2.当接收到匹配广播之后就会执行onReceive方法 3.清单文件中声明<receiver>,

  • Android使用广播(BroadCast)实现强制下线的方法

    本文实例讲述了Android使用广播(BroadCast)实现强制下线的方法.分享给大家供大家参考,具体如下: 使用广播简单模拟强制下线功能. 1.新建活动管理类 新建Activity活动管理类,方便管理所有活动. package com.example.broadcastpractice; import java.util.ArrayList; import java.util.List; import android.app.Activity; /** * 所有活动管理器 * @author

  • Android Studio实现简单音乐播放功能的示例代码

    项目要求 基于Broadcast,BroadcastReceiver等与广播相关的知识实现简单的音乐播放功能,包括音乐的播放.暂停.切换.进度选择.音量调整. 设计效果 (进度条时间刷新功能还没有实现) 实现思路 音乐服务端负责播放音乐和收发广播的功能.当音乐服务端作为接收器时,只能接收到主页面广播的控制消息:作为发送器时,向主页面发送歌曲信息更新的消息 主页面负责进度条以及音量按钮的监听,同时也有收发广播的功能.当主页面作为接收器时,只能接收到音乐服务端广播的歌曲信息更新的消息:作为发送器时,

  • Android 利用广播监听usb连接状态(变化情况)

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.lgs.test.testcode.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.widget.Toast; /** * Create

  • Android BroadcastReceiver常见监听整理

    在Android开发应用过程中 Android BroadcastReceiver经常会用到,所以抽时间整理了一番,省的后续在用到的时候再去百度. BroadcastReceiver几种常见监听 1.BroadcastReceiver监听拨号 <intent-filter android:priority="1000" > <action android:name="android.intent.action.NEW_OUTGOING_CALL"

随机推荐