绑定广播有两种方式

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

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

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>

最新文章

  1. android Intent使用
  2. UNION和UNION ALL
  3. OD使用教程10
  4. MYSQL版本问题:解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future.
  5. 到底是 const 还是 static readonly
  6. HDU4815
  7. @media screen解决移动web开发的多分辨率问题
  8. 【BZOJ】【1017】【JSOI2008】魔兽地图Dotr
  9. ida GDB 远程调试
  10. 非常实用的PHP代码片段推荐
  11. System.in与System.out(标准输入与标准输出)详解
  12. 匿名方法,Lambda表达式,高阶函数
  13. python selenium报错整理
  14. jquery扩展代码少的分页bar
  15. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验三:按键模块② &mdash; 点击与长点击
  16. (转)Floyd算法
  17. Android系统版本与API等级对应关系表
  18. redis对key的基本操作
  19. SPOJ BALNUM - Balanced Numbers - [数位DP][状态压缩]
  20. C# WebApi 过滤器的使用开发接口必备利器

热门文章

  1. 论文笔记之:Fully Convolutional Attention Localization Networks: Efficient Attention Localization for Fine-Grained Recognition
  2. SHOW OPEN TABLES – what is in your table cache
  3. Jquery easyui的validatebox控件和正则表达式
  4. 命名空间&quot;system.web&quot;中不存在类型或命名空间名称security&quot;
  5. getDimension,getDimensionPixelOffset和getDimensionPixelSize的一点说明
  6. StringBuilder与StringBuffer的区别(转)
  7. CA接口测试类
  8. Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解
  9. 【python】禁止print输出换行的方法
  10. mui中的关闭页面的几种方法