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>

  

Android短信拦截和电话拦截的更多相关文章

  1. Android短信监听实现,及Android4.4之后短信机制变更

    前阵子公司有一个项目,简单的监听短信应用,功能只有如下两个: 1.监听短信并获取短信内容上传服务器: 2.从服务器获取短信内容,发送出去    按照传统的思路,监听短信我们有两种方式:第一种是使用广播 ...

  2. android 数据存储&lt;一&gt;----android短信发送器之文件的读写(手机+SD卡)

    本文实践知识点有有三: 1.布局文件,android布局有相对布局.线性布局,绝对布局.表格布局.标签布局等,各个布局能够嵌套的. 本文的布局文件就是线性布局的嵌套 <LinearLayout ...

  3. android 数据存储----android短信发送器之文件的读写(手机+SD卡)

    本文实践知识点有有三: 1.布局文件,android布局有相对布局,线性布局,绝对布局,表格布局,标签布局等.各个布局能够嵌套的.本文的布局文件就是线性布局的嵌套 <LinearLayout x ...

  4. Android 短信的还原

    上篇文章讲到<Android 短信的备份>,本文主要实现Android 短信的还原,即是将一条 布局文件: <RelativeLayout xmlns:android="h ...

  5. Android短信发送器(2)

    在上一篇的<Android短信发送器>当中.发送功能并不完好.当发送内容超过限定字数时,短信就会发送失败,此时就须要推断内容是否超过限制,假设不超过限制.就直接发送,反之.则对其进行处理再 ...

  6. 【mob】Android短信验证+源码

    在很多的应用当中,都涉及到了短信验证的功能,比如在注册或者找回密码的时候,那么我们如何通过第三方的平台来完成这个功能呢? 本面博文就实现短信验证,来做一个小的栗子. 第一步-下载开发包 第二步-将SD ...

  7. Android 短信验证码控件

    Android 短信验证码控件,便于项目中使用统一样式,统一提示改动.个人觉得挺好用的 <span style="font-size:18px;">public cla ...

  8. android 短信拦截

    android 4+版本需要用户主动添加broadReceiver 1.清单文件 <manifest xmlns:android="http://schemas.android.com ...

  9. Android 短信拦截及用途分析

    监听系统短信这个只能作为一个技术点来研究下,读者可能在工作中可能不会哦涉及到,一般的应用软件也不会有这个需求 但是作为程序员呢,多了解一下也是好的. Android 监听系统短信有什么用? 1.对系统 ...

随机推荐

  1. 关于input标签的需要注意的几个小问题

    1.input元素没有结束标签,只有开始标签,即使写上结束标签也不起作用.如下 <input type="text" value="text" /> ...

  2. Qt中Ui名字空间以及setupUi函数的原理和实现 <转>

    用最新的QtCreator选择GUI的应用会产生含有如下文件的工程 下面就简单分析下各部分的功能. .pro文件是供qmake使用的文件,不是本文的重点[不过其实也很简单的],在此不多赘述. 所以呢, ...

  3. verilog中连续性赋值中的延时

    上次遇到一个问题.写一个testbench需要移动两个时钟之间的相位.后来一想,貌似我们都是这么写clock的 always    #(`P/2) clk = ~clk 我的两个时钟都是这么写,只是p ...

  4. Sublime 配置&插件推荐

    sublime 配置&插件推荐 Sublime编辑器的新鲜特性同时选中多个 先选中一个 再Command + D Command + P @搜索函数 #搜索关键字迷你地图 安装package ...

  5. spss

    编辑 SPSS(Statistical Product and Service Solutions),“统计产品与服务解决方案”软件.最初软件全称为“社会科学统计软件包” (SolutionsStat ...

  6. Correlation rule tuning

    Lots of organizations are deploying SIEM systems either to do their due diligence or because it’s pa ...

  7. TreeView控件例子

    XmL文件代码: <?xml version="1.0" encoding="utf-8" ?> <Area> <Province ...

  8. Android手机设置隐藏命令大全

    注意:因Android版本较多,固有部分隐藏命令或不能使用 *#*#4636#*#* 显示手机信息.电池信息.电池记录.使用统计数据.WiFi 信息 *#*#7780#*#* 重设为原厂设定,不会删除 ...

  9. DOC下编译和运行带有包的java类文件

    前言: 带有包名的java类在DOC下编译可以成功,但是运行出错  错误: 找不到或无法加载主类 com.soanl.socket.MyServer D盘temp文件下有个Hello.java文件,包 ...

  10. 一张图比較 Docker 和 Git:镜像管理设计理念

    Docker 的镜像管理设计中大量借鉴了 Git 的理念. 以下这张图将对两者的核心概念和操作进行比較,有助于大家高速掌握管理 Docker 镜像的正确方式. watermark/2/text/aHR ...