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.对系统 ...
随机推荐
- @Transactional失效的问题
spring事物配置一般没有问题, 优先检查mysql的引擎是否是innodb, 是的话检查包的扫描是否有问题. 我就是因为包的扫描导致@Transactional失效. 具体情况如下, 在sprin ...
- wordpress模板制作第一课
一套完整的WordPress模板应至少具有如下文件: style.css : CSS(样式表)文件 index.php : 主页模板 archive.php : Archive/Category模板 ...
- npm常用命令详解
~~~https://www.npmjs.org/有比较全的api文档 NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准.有了NPM,可以很快的找到特定服务要使用的 ...
- C++模板:qsort
void qsort(int l,int r){ int i,j,t,mid; mid=b[(l+r)>>1]; i=l; j=r; do{ while (b[i]<mid) i++ ...
- Poj 2232 Moo Volume(排序)
题目链接:http://poj.org/problem?id=2231 思路分析:先排序,再推导计算公式. 代码如下: #include <iostream> #include <a ...
- [置顶] 【J2SE 】1136 容器之旅
开篇引言 本篇文章我将要详细的介绍一下什么是容器?以及什么是1136?来系统全面的了解容器,以及容器的应用,下面就进入我们的容器之旅吧! 1.什么是容器? 用来存储和组织其他对象的对象.我们也可以这样 ...
- XCL-Charts图表库中柱形图的同源风格切换介绍
柱形图是被使用最多的图之中的一个,在写XCL-Charts这个Android图表库时,为它花费的时间相当多,不是由于有多难绘制,而是要在设计时怎样才干保证图基类能适应各种情况,能灵活满足足够多的需求, ...
- Django的TemplateResponse
def my_render_callback(response): return response from django.template.response import TemplateRespo ...
- 转帖:Html.BeginForm
Html.BeginForm与Ajax.BeginForm都是MVC架构中的表单元素,它们从字面上可以看到区别,即Html.BeginForm是普通的表单提交,而Ajax.BeginForm是支持异步 ...
- 玩转Bootstarp(连载)
一.Bootstarp是什么? 简单.灵活的用于搭建WEB页面的HTML.CSS.JS的工具集 (基于HTML5和CSS3) 总结:简洁强大的前端开发框架,可以让WEB开发更迅速.更简单 二.如何使用 ...