Android短信拦截和电话拦截
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短信拦截和电话拦截的更多相关文章
- Android短信监听实现,及Android4.4之后短信机制变更
前阵子公司有一个项目,简单的监听短信应用,功能只有如下两个: 1.监听短信并获取短信内容上传服务器: 2.从服务器获取短信内容,发送出去 按照传统的思路,监听短信我们有两种方式:第一种是使用广播 ...
- android 数据存储<一>----android短信发送器之文件的读写(手机+SD卡)
本文实践知识点有有三: 1.布局文件,android布局有相对布局.线性布局,绝对布局.表格布局.标签布局等,各个布局能够嵌套的. 本文的布局文件就是线性布局的嵌套 <LinearLayout ...
- android 数据存储----android短信发送器之文件的读写(手机+SD卡)
本文实践知识点有有三: 1.布局文件,android布局有相对布局,线性布局,绝对布局,表格布局,标签布局等.各个布局能够嵌套的.本文的布局文件就是线性布局的嵌套 <LinearLayout x ...
- Android 短信的还原
上篇文章讲到<Android 短信的备份>,本文主要实现Android 短信的还原,即是将一条 布局文件: <RelativeLayout xmlns:android="h ...
- Android短信发送器(2)
在上一篇的<Android短信发送器>当中.发送功能并不完好.当发送内容超过限定字数时,短信就会发送失败,此时就须要推断内容是否超过限制,假设不超过限制.就直接发送,反之.则对其进行处理再 ...
- 【mob】Android短信验证+源码
在很多的应用当中,都涉及到了短信验证的功能,比如在注册或者找回密码的时候,那么我们如何通过第三方的平台来完成这个功能呢? 本面博文就实现短信验证,来做一个小的栗子. 第一步-下载开发包 第二步-将SD ...
- Android 短信验证码控件
Android 短信验证码控件,便于项目中使用统一样式,统一提示改动.个人觉得挺好用的 <span style="font-size:18px;">public cla ...
- android 短信拦截
android 4+版本需要用户主动添加broadReceiver 1.清单文件 <manifest xmlns:android="http://schemas.android.com ...
- Android 短信拦截及用途分析
监听系统短信这个只能作为一个技术点来研究下,读者可能在工作中可能不会哦涉及到,一般的应用软件也不会有这个需求 但是作为程序员呢,多了解一下也是好的. Android 监听系统短信有什么用? 1.对系统 ...
随机推荐
- python文件操作精髓
总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...
- c# zip file and folder programmatically
In .net 4.5 Framework, we can zip a file by this way: private static string CompressFile(string sour ...
- Git merge local repository
I've met this problem for so many times and let me write a blog for solving this problem. First, you ...
- 转;说说AngularJS中的$parse和$eval
说说AngularJS中的$parse和$eval AngularJS的初学者常常会对$parse和$eval两个内建服务感到有些困惑,今天我们就来说说AngularJS中的$parse和$eval. ...
- 电感耦合非接触IC卡系统的EMI问题
射频识别(RFID)技术近年来发展迅速,并获得了广泛应用.但作为一种无线射频技术,其电磁兼容(EMC)性能也越来越受到人们的关注.RFID涉及的频率范围甚广,包括低于135kHz.13.56MHz.4 ...
- FastJson中@JSONField注解使用
最近做项目中,使用了json格式在服务器之间进行数据传输.但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式. 思路: ...
- python利用utf-8编码判断中文英文字符(转)
下面这个小工具包含了判断unicode是否是汉字.数字.英文或者其他字符,全角符号转半角符号,unicode字符串归一化等工作. #!/usr/bin/env python # -*- coding: ...
- Linux新手笔记 svn ntfs
centos 6.4 64 笔记一.安装Apache1.使用yum命令安装Apacheyum -y install httpd2.设置开机启动Apachechkconfig --levels 235 ...
- [译]SSRS 编写带参数的MDX报表
编写MDX报表长久以来对于报表人员来说都比较痛苦. 当然如果你用查询设计器(Query Designer) 直接拖拉数据集那就很方便,但是你们有没有想过查询设计器是怎么创建MDX的.或者创建的参数是如 ...
- C#高级编程零散知识点
1.206-实现单链表的添加和插入 207-实现单链表的其他功能和 3.209-Lambda表达式 4.301-栈的介绍和BCL中的栈 4.501-进程和线程的概念[00_12_06][2015122 ...