绑定广播有两种方式

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

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

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";
@Override
protected 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
{
@Override
public 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
{
@Override
public 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{ @Override
public 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-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android: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>

Android之BroadcastReceiver 监听系统广播的更多相关文章

  1. 【用户交互】APP没有退出前台但改变系统属性如何实时更新UI?监听系统广播,让用户交互更舒心~

    前日,一小伙伴问我一个问题,说它解决了半天都没解决这个问题,截图如下: 大概楼主理解如下: 如果在应用中有一个判断wifi的开关和一个当前音量大小的seekbar以及一个获取当前电量多少的按钮,想知道 ...

  2. Android手机上监听短信的两种方式

    Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...

  3. BroadcastReceiver监听电量变化

    用BroadcastReceiver监听电量的变化,可以实现BroadcastReceiver接收电量变化的广播,然后获取电量百分比信息. BatteryChangedReceiver.java pu ...

  4. 用BroadcastReceiver监听手机网络状态变化

    android--解决方案--用BroadcastReceiver监听手机网络状态变化 标签: android网络状态监听方案 2015-01-20 15:23 1294人阅读 评论(3) 收藏 举报 ...

  5. Android实现网络监听

    一.Android Wifi常用广播 网络开发中主体会使用到的action: ConnectivityManager.CONNECTIVITY_ACTION WifiManager.WIFI_STAT ...

  6. Android 手势水平监听判断

    package com.zihao.ui; import com.zihao.R; import android.os.Bundle; import android.app.Activity; imp ...

  7. Android中如何监听GPS开启和关闭

    转自 chenming 原文 Android中如何监听GPS开启和关闭   摘要: 本文简单总结了如何监听GPS开关的小技巧 有时需要监听GPS的开关(这种需求并不多见).实现的思路是监听代表 GPS ...

  8. android的电话监听

    android的电话监听 新建一个项目,结构图如下: PhoneService: package com.demo.tingdianhua; import android.app.Service; i ...

  9. Android零基础入门第34节:Android中基于监听的事件处理

    原文:Android零基础入门第34节:Android中基于监听的事件处理 上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本 ...

随机推荐

  1. weblogic管理2 - 创建并启动一个managed server

    创建一个managed server. 1.  进入网页console管理页面,如:http://10.100.25.14:7001/console     , 先点击->服务器 (红色标记框) ...

  2. Android调用系统分享功能以及createChooser的使用

    工程结构 //效果图 点击测试分享                                                                                   ...

  3. 市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交

    http://blog.csdn.net/cjr15233661143/article/details/19041165 市委组织部考核项目中需要录入原始数据,拿开发区的数据录入举例说明,见下图,需要 ...

  4. 运用cookie登陆人人网爬取数据

    浏览器访问WEB服务器的过程 在用户访问网页时,不论是通过URL输入域名或IP,还是点击链接,浏览器向WEB服务器发出了一个HTTP请求(Http Request),WEB服务器接收到客户端浏览器的请 ...

  5. apache配置weblogic部署集群,多节点的项目和单节点项目并存 负载均衡

    开启模块如下: LoadModule weblogic_module modules/mod_wl_22.so LoadModule lbmethod_byrequests_module module ...

  6. Linux 下增大tomcat内存

    我的服务器的配置: # OS specific support.  $var _must_ be set to either true or false. JAVA_OPTS="-Xms10 ...

  7. 控制DIV占满屏幕

    网上找了很多帖子,希望是CSS控制的,但是在bootstrap环境下, 控制方式上有点问题.达不到想要的效果. 项目中需要实现的效果: DIV区域占满当前窗口的高度.且在ctrl+鼠标滚轮调整窗口大小 ...

  8. openstack(liberty):部署实验平台(二,简单版本软件安装 part1)

    软件安装过程中,考虑到现在是一个实验环境,且也考虑到规模不大,还有,网络压力不会大,出于简单考虑,将各个节点的拓扑结构改了一下,主要体现在网络节点和控制节点并在了一起.在一个服务器上安装! 到目前位置 ...

  9. [Hibernate] - Query Select

    测试了常用的一些HQL查询方法,具体HQL的强大可以参考: http://docs.jboss.org/hibernate/orm/3.5/reference/zh-CN/html/queryhql. ...

  10. rsync 同步文件

    rsync 同步文件 rsync -avz roo@192.168.4.12::/home/a ./a  --exclude "data" exclude 去掉/a/data 文件 ...