Android 利用内容观察者实现短信窃听
2016-06-18 17:00
344 查看
《Android 内容观察者的原理》中介绍了内容观察者的一些基本原理,并做了简单的实战,本文接着进一步做一个小项目实战
添加权限:android.permission.READ_SMS
运行代码后,只要短信发生变化,都会提示,并且短信的内容会自动保存在XXX.abc文件中
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文件中
相关文章推荐
- Weex Android SDK源码分析之Module(navigator)
- Android Spinner值不显示,选择列表正常
- Android之SQLite登录注册与EditText清除功能
- Android 手机设置中的关于手机界面
- android提供ToolBar实现划动菜单的陷阱
- Android系统默认Home(Launcher)的启动过程小结
- Android 内容观察者的原理
- Android自动获取短信验证码
- 了解使用Android ConstraintLayout
- Retrofit与RxAndroid结合使用
- Android Scroll分析(二)——滑动的几种方法
- Weex Android SDK源码分析之Module(modal)
- canvas的save,restore方法的使用理解
- 安卓侧边栏实现
- Android中ListView长按事件和点击事件的冲突问题
- Android官方文档之Animation
- 简单的朋友圈界面-Android(一)
- Android AsyncTask
- Android——初识RxJava
- Android应用开发-数据存储和界面展现(二)