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.对系统 ...
随机推荐
- HDU1257-最少拦截系统
描述: 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来 ...
- CRM中的一个函数,保存一下,别系统被ぅ崩坏就麻烦了.
CREATE OR REPLACE function UXQLCRM.GET_WEI_XIU(htfid in varchar2) ); CURSOR cr_bg_jl is select " ...
- python re(正则模块)
参考文档:http://blog.csdn.net/wusuopubupt/article/details/29379367 ipython环境中,输入"?re",官方解释如下: ...
- Linux C 实现Ping功能的程序.
ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具.ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,这 ...
- (Problem 72)Counting fractions
Consider the fraction, n/d, where n and d are positive integers. If nd and HCF(n,d)=1, it is called ...
- 未能加载文件或程序集“xxxx”或它的某一个依赖项
一般是解决方案中相互依赖的项目生成的目标平台不一样所致,更改为相同目标即可!
- 电子标签(RFID)天线的印制技术
电子标签是射频识别(RFID)的俗称,RFID是射频识别技术的英文(RadioFrequencyIdentification)缩写,射频识别技术是一项利用射频信号通过空间耦合(交变磁场或电磁场)实现无 ...
- Shared_from_this 几个值得注意的地方
shared_from_this()是enable_shared_from_this<T>的成员 函数,返回shared_ptr<T>.首先需要注意的是,这个函数仅在share ...
- 看java源代码
不会看JDK源代码,相当于没学过Java. 网上不容易找到一篇帮助我解决了如何在Eclipse下查看JDK源代码 的文章. 核心提示:在Eclipse中查看JDK类库的源代码!!! 设置: 1.点 w ...
- find the most comfortable road(并差集,找差值最小的权值)
find the most comfortable road Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...