Android之BroadcastReceiver 监听系统广播

绑定广播有两种方式

一.配置文件绑定,在程序未启动也能监听

二.代码方式绑定,在程序启动后才能监听

 

1.绑定和取消绑定广播

public class MainActivity extends Activity {private Button registerButton=null;private Button unRegisterButton=null;private SMSReceiver smsReceiver=null;private static final String SMS_ACTION="android.provider.Telephony.SMS_RECEIVED";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);registerButton=(Button)findViewById(R.id.registerButton);unRegisterButton=(Button)findViewById(R.id.unRegisterButton);registerButton.setOnClickListener(new RegisterReceiverListener());unRegisterButton.setOnClickListener(new UnRegisterReceiverListener());/*if (savedInstanceState == null) {getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();}*/}class RegisterReceiverListener implements OnClickListener{@Overridepublic void onClick(View v) {System.out.println("registerReceiver");//生成一个BroadcastReceiver对象smsReceiver=new SMSReceiver();//生成一个IntentFilter对象IntentFilter filter=new IntentFilter();//为IntentFilter添加一个Action
            filter.addAction(SMS_ACTION);MainActivity.this.registerReceiver(smsReceiver, filter);}}class UnRegisterReceiverListener implements OnClickListener{@Overridepublic void onClick(View v) {System.out.println("unregisterReceiver");MainActivity.this.unregisterReceiver(smsReceiver);}}

 

2.广播类

package com.example.mars_1800_broadcastreceiver02;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage;public class SMSReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("receive message");//接收Intent对象当中的数据Bundle bundle=intent.getExtras();//在Bundle对象中有一个属性为pdus,该属性为Object数组Object[] myOBJpdus=(Object[])bundle.get("pdus");//创建一个SmsMessage类型的数组SmsMessage[] messages=new SmsMessage[myOBJpdus.length];System.out.println(messages.length);for (int i = 0; i < myOBJpdus.length; i++) {//使用Object数组中的对象创建SmsMessage对象messages[i]=SmsMessage.createFromPdu((byte[])myOBJpdus[i]);//获取到信息对象的内容
            System.out.println(messages[i].getDisplayOriginatingAddress());System.out.println(messages[i].getDisplayMessageBody());}}
}

 

3.加入相应权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.mars_1800_broadcastreceiver02"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="19" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.mars_1800_broadcastreceiver02.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- <receiver android:name="SMSReceiver" ><intent-filter><action android:name="android.provider.Telephony.SMS_RECEIVED" /></intent-filter></receiver> --></application><!--  接收短信广播则一定有加入相应的权限 --><uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 网络设备驱动开发(三) —— 网络设备驱动基本原理和框架

一、协议栈层次对比 二、Linux网络子系统 Linux网络子系统的顶部是系统调用接口层。它为用户空间提供的应用程序提供了一种访问内核网络子系统的方法&#xff08;socket&#xff09;。位于其下面是一个协议无关层&#xff0c;它提供一种通用的方法来使用传输层协议。然后是具…

国产杀毒软件也开始支持虚拟化

今天不小心看到一个较老的“新”闻&#xff0c;国产安全软件厂商瑞星已经推出支持VMware vshield Endpoint技术的防病毒产品&#xff0c;也就是说如果客户今天使用的是VMware的虚拟化软件&#xff0c;上面运行的所有虚拟机就不需要安装传统的防病毒软件程序&#xff0c;而可以直…

VRP平台基本操作

一、显示系统信息 <Huawei>display version 图上所示可以知道VRP平台信息&#xff0c;运行的版本&#xff0c;运行的时间 二、修改和查看设备系统时间参数 1.查看时间 <Huawei>display clock 2.修改系统日期和时间 三、进入系统视图界面 <Huawei>system-view…

Android中获取应用程序(包)的信息-----PackageManager的使用(一)

本节内容是如何获取Android系统中应用程序的信息&#xff0c;主要包括packagename、label、icon、占用大小等。具体分为两个 部分&#xff0c;计划如下&#xff1a; 第一部分&#xff1a; 获取应用程序的packagename、label、icon等 &#xff1b; 第二部分&#xff1a; 获取应用…

VRP平台总体介绍及基础配置

前言 1、VRP软件系统基础 VRP系统在启动时需要加载“系统软件”和“配置文件”两部分&#xff0c;这与其它品牌网络交换机的操作系统是一样的。如果指定了下次启动的补丁文件&#xff0c;还需加载补丁文件。修改VRP系统启动的场景一般有以下几种&#xff1a; a-- 对交换机进行升…

小强的HTML5移动开发之路(43)——JqueryMobile页眉、工具栏和标签栏导航

一、页眉1、添加页眉和页脚<div data-role"header"><h1>第 1 页</h1></div><div data-role"footer"><h4>页面脚注</h4></div>默认的页眉在屏幕的顶部边缘显示&#xff0c;而且在在屏幕滚动时&#xff0c;…

交换机开发(二)—— 三层交换机报文转发过程

如图所示&#xff0c;假如主机A想访问主机B&#xff0c;首先主机A会将自己的IP地址和子网掩码做与操作,得出网路地址(如:Host-A的IP地址100.1.1.2与自身掩码255.255.255.0做与操作后,得到的网络号是100.1.1.0).然后判断目的IP地址(即Host-B的IP地址)与自己的网络地址是不是在同…

分布式搜索elasticsearch配置文件详解

2019独角兽企业重金招聘Python工程师标准>>> elasticsearch的config文件夹里面有两个配置文件&#xff1a;elasticsearch.yml和logging.yml&#xff0c;第一个是es的基本配置文件&#xff0c;第二个是日志配置文件&#xff0c;es也是使用log4j来记录日志的&#xff…

交换机开发(三)—— 深入分析三层网络交换机的原理和设计

引言传统路由器在网络中起到隔离网络、隔离广播、路由转发以及防火墙的作业&#xff0c;并且随着网络的不断发展&#xff0c;路由器的负荷也在迅速增长。其中一个重要原因是出于安全和管理方便等方面的考虑&#xff0c;VLAN(虚拟局域网)技术在网络中大量应用。VLAN技术可以逻辑…

XML 命名空间(XML Namespaces)

为什么80%的码农都做不了架构师&#xff1f;>>> XML 应用程序 XML CDATA XML 命名空间提供避免元素命名冲突的方法。 命名冲突 在 XML 中&#xff0c;元素名称是由开发者定义的&#xff0c;当两个不同的文档使用相同的元素名时&#xff0c;就会发生命名冲突。 这个…

交换机开发(四)—— ARP 基础知识解析

一、ARP协议简介 Internet是由各种各样的物理网络通过使用诸如路由器之类的设备连接在一起组成的。当主机发送一个数据包到另一台主机的过程中 可能要经过多种不同的物理网络。主机和路由器都是在网络层通过IP地址来识别的&#xff0c;这个地址是在全世界内唯一的。 然而&…

VRP网络操作系统简介

VRP (Versatile Routing Platform)即通用路由平台&#xff0c;是华为在通信领域多年的研究经验结晶&#xff0c;是华为所有基于IP/ATM构架的数据通信产品操作系统平台。运行VRP操作系统的华为产品包括路由器、局域网交换机、ATM交换机、拨号访问服务器、IP电话网关、电信级综合…

Type mismatch:

Type mismatch: cannot convert from java.sql.PreparedStatement to com.mysql.jdbc.PreparedStatement import java.sql.PreparedStatement; java连接数据库的问题&#xff1a;Type mismatch: cannot convert from ResultSet to ResultSet 包导入错了,你要导入的是import jav…

Linux 下挂载新硬盘方法

Linux的硬盘识别: 一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘 设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息. 1.关闭服务器加上新硬盘 2.启动服务器&#xff0c;以root用户登录 3.查看硬盘信息 #fdisk -l [cpp] view plaincopy Disk /dev/sda: 42.9 GB…

php面向对象之单表操作类

<?php //数据库单表操作类 define("HOST","localhost"); define("USER","root"); define("PASS",""); define("DBNAME","lamp78"); class Db {protected $link; //连接资源protected $…

C++ 学习基础篇(一)—— C++与C 的区别

编程的学习学无止境&#xff0c;只掌握一门语言是远远不够的&#xff0c;现在我们开始C的学习之路&#xff0c;下面先看下C 与C 的区别 一、C概述 1、发展历史 1980年&#xff0c;Bjarne Stroustrup博士开始着手创建一种模拟语言&#xff0c;能够具有面向对象的程序设计特色。在…

C++学习基础篇 —— 引用()的用法和应用

一、引用简介 引用就是某一变量&#xff08;目标&#xff09;的一个别名&#xff0c;对引用的操作与对变量直接操作完全一样。 引用的声明方法&#xff1a;类型标识符&引用名目标变量名&#xff1b; 【例1】&#xff1a; [cpp] view plaincopy int a; int &raa; //定义…

js 数组遍历for..in弊端

//for..in在数组中的弊端 原则上数组Array对象是不能操作的&#xff0c;但是有些程序员开始不注意把Array的原型链上添加了方法就会出现意想不到的bug//例如var arr [1,2,3];Array.prototype.test function() { }for(var i in arr) { //。。。。操作 }就会把test遍历出来 会出…

C++基础知识(一)—— C++程序结构

下面我们从一个最简单的程序入手看一个C程序的组成结构。 // my first program in C #include <iostream.h> using namespace std; int main() { cout << “Hello World!”; return 0; } Hello World! 上面左侧显示了我们的第一个程序的源代码&#xff0c…

给大家推荐一款高大上的代码高亮插件(sublime,github风格)——highlight.js

经常在一些大神博客里面看到非常好看的高亮代码&#xff0c;有sublime风格&#xff0c;GitHub风格等等。毫无疑问&#xff0c;好的高亮代码插件可以不仅仅让你的博文显得更高大上&#xff0c;更重要的是舒适的阅读体验。经过我在网上的一番搜罗&#xff0c;终于找到了一款非常赞…