package com.example.broadcasttext;


import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


/*通过activity来注册和取消注册广播
* 特别注意Mainfest。xml中注册permit
* */
public class MainActivity extends Activity {
private Button mBtn_register;
private Button mBtn_unregister;
private BCReceiver SMSReceiver;
//当设备收到sms短信,android系统会广播此Action
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);
mBtn_register = (Button) findViewById(R.id.btn_register);
mBtn_unregister = (Button) findViewById(R.id.btn_unregister);
mBtn_register.setOnClickListener(new RegisterListener());
mBtn_unregister.setOnClickListener(new UnRegisterListener());
}
//用于注册BroadCastReceiver的监听器
class RegisterListener implements OnClickListener{


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SMSReceiver = new BCReceiver(); //创建一个BroadCastReceiver类
IntentFilter filter = new IntentFilter(); //创建一个过滤器
filter.addAction(SMS_ACTION);//过滤器添加Action
MainActivity.this.registerReceiver(SMSReceiver, filter);//在Activity中注册BroadCastReceiver
System.out.println("-----Register is succeed---"); //输出字符串作为标记,

}

}
//用于取消注册BroadCastReceiver的监听器
class UnRegisterListener implements OnClickListener{


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MainActivity.this.unregisterReceiver(SMSReceiver); //取消注册BroadCastReceiver
System.out.println("-----------UnRegister is succeed"); //输出字符串作为标记

}

}

}



package com.example.broadcasttext;


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.test.suitebuilder.annotation.Smoke;


/*当Activity中注册BroadCastReceiver以后,andrid系统传来SMS_Action
* 就会执行onReceive这个方法
* PDU (protocol description unit) 协议解释单元
* 短信发送的intent的bundle中取值用key="PUDS"
* */
public class BCReceiver extends BroadcastReceiver{
private Bundle bundle;


//用于接受android系统传来的intent,以及进行进一步数据处理
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("-------onReceive is succeed--nice");//输出字符串作为标记
bundle = intent.getExtras(); //通过调用Intent类中getExtras()方法返回bundle,
Object[] SMSObject = (Object[]) bundle.get("PUDS"); //通过调用Bundle类中get()方法返回object对象,PUDS为获取短信的key
SmsMessage[] sms = new SmsMessage[SMSObject.length]; //创建一个长度为SMSobject的Smsmessage的数组对象
for(int i=0; i<SMSObject.length ; i++){
sms[i] = SmsMessage.createFromPdu((byte[]) SMSObject[i]); //根据一行pud创建一个SMSmessage对象

}
}


}

更多相关文章

  1. Android中十六进制颜色字符串转int的方法
  2. Http 以post方式获取数据
  3. DateUtils时间工具类
  4. Android(安卓)studio 安卓填写注册表单源代码 (课后练习的答案)
  5. Android(安卓)Handler Message 传递字符串
  6. Android实例三:学习Service
  7. 操作json的工具类
  8. Android(安卓)APP修改全局字体
  9. Android:静态注册BroadcastReceiver

随机推荐

  1. AndroidStudio3.0多渠道打包
  2. 运行时改变Button的android:drawableTop
  3. android binder 面试
  4. android中四个典型动画设置
  5. Android(安卓)Studio -- Error retrievin
  6. 【Gradle】自定义Android(安卓)Gradle工
  7. Android(安卓)android 6.0权限校验及版本
  8. android 强制竖屏
  9. Android(安卓)UI
  10. ReactNative: Android与iOS平台兼容处理