MainActivity:

package com.wyl.bctest;

import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView; public class MainActivity extends ActionBarActivity {
private final static String ACTION_SMS_RECEIVE = "android.provider.Telephony.SMS_RECEIVED";
private final static String ACTION_CALL_OUT = "android.intent.action.NEW_OUTGOING_CALL";
Button btn;
Button btn2;
Button btn3;
Button btn4;
TextView tv;
BCReceiver re = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn01);// 模拟发送广播
btn2 = (Button) findViewById(R.id.btn02);// 注册广播
btn3 = (Button) findViewById(R.id.btn03);// 取消注册广播
btn4 = (Button) findViewById(R.id.btn04);
MyOnclickListener l = new MyOnclickListener();
MyOnclickListener2 listen2 = new MyOnclickListener2();
btn.setOnClickListener(l);
btn2.setOnClickListener(l);
btn4.setOnClickListener(l);
btn3.setOnClickListener(listen2);// 取消注册广播
} class MyOnclickListener implements OnClickListener {
@Override
public void onClick(View v) {
if (R.id.btn02 == v.getId()) {
BCReceiver r = new BCReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_SMS_RECEIVE);
System.out.println("注册广播拦截,btn02");
MainActivity.this.registerReceiver(r, filter);
} else if (R.id.btn01 == v.getId()) {
Intent intent = new Intent();
intent.setAction(ACTION_SMS_RECEIVE);
System.out.println("自己发送广播");
MainActivity.this.sendBroadcast(intent); } else if (R.id.btn03 == v.getId()) {
BCReceiver r = new BCReceiver();
MainActivity.this.unregisterReceiver(r);
} else if (R.id.btn04 == v.getId()) {
// 拦截电话呼出
// android.intent.action.NEW_OUTGOING_CALL
BCReceiver2 r04 = new BCReceiver2();
IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_CALL_OUT);
MainActivity.this.registerReceiver(r04, filter);
}
} } class MyOnclickListener2 implements OnClickListener {
@Override
public void onClick(View v) {
System.out.println("listen2,取消注册广播");
MainActivity.this.unregisterReceiver(re);
}
}
}

  短信对应的receiver,

package com.wyl.bctest;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsManager;
import android.telephony.gsm.SmsMessage; public class BCReceiver extends BroadcastReceiver {
public BCReceiver() {
// TODO Auto-generated constructor stub
System.out.println("BCReceiver短信构造器。。。");
} @Override
public void onReceive(Context arg0, Intent intent) {
// TODO Auto-generated method stub
System.out.println("onReceiver短信复写方法。。。。");
Bundle bundle = intent.getExtras();
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage mSmsMessage[] = new SmsMessage[messages.length];
for (int i = 0; i < messages.length; i++) {
mSmsMessage[i] = SmsMessage.createFromPdu((byte[]) messages[i]);
}
System.out.println("短信的具体内容"+mSmsMessage.toString());
} }

  电话拦截相关的receiver,

package com.wyl.bctest;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent; public class BCReceiver2 extends BroadcastReceiver{
public BCReceiver2() {
// TODO Auto-generated constructor stub
System.out.println("BCReceiver电话拦截构造器。。。");
}
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
System.out.println("onReceiver电话拦截复写方法。。。。"); } }

  注意点就是:

1.在AndroidMainfest.xml中注册短信接收和电话呼出的权限。

2.在Java代码中注册拦截的时候IntentFilter filter,其中filter.addAction(param)的参数param相当于AndroidMainfest.xml中的

<receiver android:name="com.wyl.jqr.TestReceiver">
<intent-filter>
<action android:name="android.intent.action.EDIT"/>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>

  

android.provider.Telephony.SMS_RECEIVED这个String字符串,
AndroidMainifest.xml的整个配置如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wyl.bctest"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<!-- 增加拦截电话的权限 -->
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.wyl.bctest.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="com.wyl.bctest.BCReceiver"
></receiver>
-->
</application> </manifest>

  

最新文章

  1. [NHibernate]Nullables
  2. angularjs不同页面间参数的传递
  3. Ionic 2 rc 添加第三方的插件(plugin) 以Echarts为例
  4. android接收短信——framework处理流程(android 5.1)
  5. 《30天自制操作系统》13_day_学习笔记
  6. Ubuntu 14.04 使用的一些笔记
  7. JavaScript 全局
  8. jquery 获取选中的文字.当前光标所在的位置等jquery-fieldselection 插件
  9. USACO Wormholes 【DFS】
  10. zend framework 配置连接数据库
  11. 剖析插件 DataTable 自定义列表列get请求如何书写传递的参数
  12. weblogic创建控制台启动脚本以及创建服务器
  13. xcode10 改动
  14. Mac如何找到从AppStore下载的正版Xcode安装包、以及Xcode清理缓存
  15. 51Nod 1072 威佐夫游戏
  16. 11th 5个新的问题——关于软件工程
  17. shell笔记-算术运算
  18. 给data设置数据
  19. metasploit 利用MS08-067渗透攻击xp系统全过程
  20. [2017BUAA软工]个人项目心得体会:数独

热门文章

  1. poj2032Square Carpets(IDA* + dancing links)
  2. Zencart先生成订单后付款,类似淘宝后台修改订单价格
  3. 创建理想的SEQUENCE和自增长的trigger
  4. codeforces 622E. Ants in Leaves
  5. 循环-10. 求序列前N项和(15)
  6. javascript收集整理
  7. 一个高效过滤非UTF8字符的C函数(也可用来判断是否utf8)
  8. github 的分支操作
  9. JSP中的相对路径和绝对路径(转)
  10. HDU 1544 Palindromes(回文子串)