《Android 内容观察者的原理》中介绍了内容观察者的一些基本原理,并做了简单的实战,本文接着进一步做一个小项目实战

package com.wuyudong.smslistener;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.database.ContentObserver;
import android.database.Cursor;
import android.view.Menu; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Uri uri = Uri.parse("content://sms");
getContentResolver().registerContentObserver(uri, true,
new MyObserver(new Handler())); } private class MyObserver extends ContentObserver { public MyObserver(Handler handler) {
super(handler);
} @Override
public void onChange(boolean selfChange) {
System.out.println("短信数据库发生变化了。");
Uri uri = Uri.parse("content://sms");
Cursor cursor = getContentResolver().query(uri,
new String[] { "body", "address", "date", "type" }, null,
null, "_id desc");
cursor.moveToFirst();
String body = cursor.getString(0);
String address = cursor.getString(1);
String date = cursor.getString(2);
String type = cursor.getString(3); try {
File file = new File(getFilesDir(), "XXX.abc");
FileOutputStream fos = new FileOutputStream(file, true);
fos.write(("内容: " + body + "--地址" + address + "--时间: " + date
+ "--类型" + type + "\n").getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
} super.onChange(selfChange);
}
} }

添加权限:android.permission.READ_SMS

运行代码后,只要短信发生变化,都会提示,并且短信的内容会自动保存在XXX.abc文件中

Android 利用内容观察者实现短信窃听的更多相关文章

  1. [android]ShareSDK——内容分享和短信验证

    前言 新版本号ShareSDK的分享和短信验证,按官网的文档,都须要加入一个<Activity></Activity>标签,而分享和短息验证的这个标签内容都一样.会冲突. 解决 ...

  2. 利用Android Lost通过互联网或短信远程控制安卓设备

    利用Android Lost通过互联网或短信远程控制安卓设备 作者:Jack Wallen| 杰克·瓦伦翻译:PurpleEndurer.2014-11-15第1版 使用智能手机要考虑的一个至关重要的 ...

  3. Android中内容观察者的使用---- ContentObserver类详解 (转)

    前言: 工作中,需要开启一个线程大量的查询某个数据库值发送了变化,导致的开销很大,后来在老大的指点下,利用了 ContentObserver完美的解决了该问题,感到很兴奋,做完之后自己也对Conten ...

  4. Android手机上监听短信的两种方式

    Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...

  5. android 中调用接口发送短信

    android中可以通过两种方式发送短信 第一:调用系统短信接口直接发送短信:主要代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getD ...

  6. Android安卓电话拦截及短信过滤

    package com.focus.manager; import java.lang.reflect.Method; import Android .app.Activity; import And ...

  7. Android Tips: 打电话和发短信

    利用Android打电话非常简单,直接调用Android内在的电话功能就可以了. btnDail.setOnClickListener(new OnClickListener(){ @Override ...

  8. Ztorg木马分析: 从Android root木马演变到短信吸血鬼

    本月第二次,Google 从官方应用商店 Google Play 中移除了伪装成合法程序的恶意应用.被移除的应用都属于名叫 Ztorg 的 Android 恶意程序家族.目前为止,发现的几十个新的Zt ...

  9. Android -- ContentObserver 内容观察者

    1. 实现原理图 2. 示例代码 (暂时有个问题,短信观察者 收到一条短信时 onchange方法会执行两次, 解决方法为:每次监听到变化的时候就去取最新短信的id,跟上次取的比较,如果一样的就不做处 ...

随机推荐

  1. 绘制SVG内容到Canvas的HTML5应用

    SVG与Canvas是HTML5上绘制图形应用的两种完全不同模式的技术,两种绘制图形方式各有优缺点,但两者并非水火不容,尤其是SVG内容可直接绘制在Canvas上的功能,使得两者可以完美的融合在一起, ...

  2. linux专题三之如何悄悄破解root密码(以redhat7.2x64为例)

    root用户在linux系统中拥有至高无上的权限.掌握了root密码,差不对可以对linux系统随心所欲了,当然了,root用户也不是权限最高的用户. 但是掌握了root密码,基本上够我们用了.本文将 ...

  3. SQL 语句的TOP,Distinct语句

    --Top获取前几条数据,一般都与Order By连用 SELECT TOP 3 * FROM dbo.MyStudent --查询Student表中前3条所有的数据 SELECT TOP 3 S_N ...

  4. 在CentOS上部署Asp.Net MVC3的第一次尝试

    关注mono已经很久了,现在才有时间真正的尝试一下在linux中部署asp.net的网站,也算是记录 一下自己的第一次尝试吧. 我的实践的环境是win7 + VM10 + CentOS6.5 下面就是 ...

  5. ASP.NET MVC系列:添加模型

    模型(Model)是应用程序中用于处理应用程序数据逻辑的部分;通常模型对象在数据库中存取数据 添加模型类 在解决方案中右击Models文件夹,然后选择“添加”,在“添加”项里选择“类”:或者选中Mod ...

  6. 在Gridview如何进行每行单元格比较

    有在论坛上看到一个问题,就是在Gridview控件中,需要对几个列的数值进行比较,原问题如下: 先在数据库中准备数据: CREATE TABLE [dbo].[RecordTime] ( Id ,) ...

  7. css3飞机起飞进度条

    效果:http://hovertree.com/texiao/css3/27/ 源码下载:http://hovertree.com/h/bjaf/pgwql1x2.htm 本效果使用Font Awes ...

  8. When to close cursors using MySQLdb

    http://stackoverflow.com/questions/5669878/when-to-close-cursors-using-mysqldb I'm building a WSGI w ...

  9. (学习笔记)PHP的输出echo和print

    echo 和 print 之间的差异: echo - 能够输出一个以上的字符串 print - 只能输出一个字符串,并始终返回 1 echo语句 echo 或 echo()均可. 输出换行 echo ...

  10. BZOJ 2467 解题报告

    对于一个合格的程序员来说,掌握一定的数学知识是非常必要的,所以这次就开个数学专题玩玩. 不多说啥,上题目,我们直接分析题目! 首先ORZ stonepage神犇,一眼就看出我把快速幂写成快速乘了…… ...