Android黑科技之读取用户短信+修改系统短信数据库_Android

安卓系统比起ios系统最大的缺点,相信大家都知道,就是系统安全问题。这篇博客就秀一波“黑科技”。

读取用户短信

Android应用能读取用户手机上的短信,相信已经不是什么新鲜事,比如我们收到的短信验证码,一些app马上就能自动获取并填上验证码,省去我们手动填写验证码。原理就是通过Android的ContentProvider组件间接访问系统的短信数据库,获取所有短信内容。下面来演示一下。

        布局很简单,如下:

 

代码如下:

public class MainActivity extends Activity {
  List<Message> smsList;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    smsList = new ArrayList<Message>();
  }
  public void click(View v){
    //访问内容提供者获取短信
    ContentResolver cr = getContentResolver();
    //            短信内容提供者的主机名
    Cursor cursor = cr.query(Uri.parse("content://sms"), new String[]{"address", "date", "body", "type"},
        null, null, null);
    while(cursor.moveToNext()){
      String address = cursor.getString(0);
      long date = cursor.getLong(1);
      String body = cursor.getString(2);
      String type = cursor.getString(3);
      Message sms = new Message(body, type, address, date);
      smsList.add(sms);
      Log.e("TAG", sms.toString());
    }
  }
  public void click2(View v){
    XmlSerializer xs = Xml.newSerializer();
    File file = new File("sdcard/sms.xml");
    FileOutputStream fos;
    try {
      fos = new FileOutputStream(file);
      xs.setOutput(fos, "utf-8");
      xs.startDocument("utf-8", true);
      xs.startTag(null, "message");
      for (Message sms : smsList) {
        xs.startTag(null, "sms");
        xs.startTag(null, "body");
        xs.text(sms.getBody());
        xs.endTag(null, "body");
        xs.startTag(null, "date");
        xs.text(sms.getDate() + "");
        xs.endTag(null, "date");
        xs.startTag(null, "type");
        xs.text(sms.getType());
        xs.endTag(null, "type");
        xs.startTag(null, "address");
        xs.text(sms.getAddress());
        xs.endTag(null, "address");
        xs.endTag(null, "sms");
      }
      xs.endTag(null, "message");
      xs.endDocument();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
} 

要读取手机短信和插入短信,还必须加上一下权限:

<uses-permission android:name="android.permission.READ_SMS"/>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

下面来分析一下代码:第一个按钮通过ContentProvider间接获取了一些短信的信息,保存在一个List数组下。我们先导出Android系统的sms表看一下:

 

总共有17个字段这么多,显然不是我们都关心的,这里只要了address,date, body, type四个字段,分别表示对方号码,短信时间,短信内容,发送还是接收。第二个按钮把短信相关信息存储在一个序列化的XML文件中,方便查看。 

放上XML截图:

 

可以看出此时手机上共有5条短信,大功告成。

修改系统短信数据库

         真正的黑科技来了,相信大家知道有些不法分子能冒充各种号码发布虚假信息,如10086啥的,下面示范一下用95533(建行)发送一条愚人节贺卡。

         代码如下:

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
  public void click(View v){
    Thread t = new Thread(){
      @Override
      public void run() {
        ContentResolver cr = getContentResolver();
        ContentValues values = new ContentValues();
        values.put("address", 95533);
        values.put("type", 1);
        values.put("date", System.currentTimeMillis());
        values.put("body", "您尾号为9999的信用卡收到1,000,000RMB转账,请注意查收");
        cr.insert(Uri.parse("content://sms"), values);
      }
    };
    t.start();
  }
} 

思路跟前一步差不多,不过这里是插入一条短信。实现效果:

顺带一提,从Android 5.0开始,默认短信应用外的软件不能以写入短信数据库的形式(write sms)发短信,也就是说修改系统短信数据库行不通了,不过读取用户短信这个bug至今还没修复。所以不想被骗的童鞋还是感觉升级5.0以上的版本吧^_^

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android黑科技
读取用户短信
读取短信数据库、火影之黑科技系统、黑科技位面交易系统1、黑科技短信轰炸注册机、黑科技教务系统,以便于您获取更多的相关知识。

时间: 2024-10-27 00:27:07

Android黑科技之读取用户短信+修改系统短信数据库_Android的相关文章

Android编程开发之TextView文字显示和修改方法(附TextView属性介绍)_Android

本文实例讲述了Android编程开发之TextView文字显示和修改方法.分享给大家供大家参考,具体如下: 一. 新建一个Activity 和 Layout 首先在layout文件夹中新建一个activity_main.xml,在新建工程的时候一般默认会新建此xml文件,修改其代码如下: activity_main.xml 代码 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x

Android编程之SMS读取短信并保存到SQLite的方法_Android

本文实例讲述了Android编程之SMS读取短信并保存到SQLite的方法.分享给大家供大家参考,具体如下: Android 之 SMS 短信在Android系统中是保存在SQLite数据库中的,但不让其它程序访问(Android系统的安全机制) 现在我们在读取手机内的SMS短信,先保存在我们自己定义的SQLite数据库中,然后读取SQLite数据库提取短信,并显示 SMS短信SQLite存取代码: package com.homer.sms; import java.sql.Date; imp

Android编程之SMS读取短信并保存到SQLite的方法

本文实例讲述了Android编程之SMS读取短信并保存到SQLite的方法.分享给大家供大家参考,具体如下: Android 之 SMS 短信在Android系统中是保存在SQLite数据库中的,但不让其它程序访问(Android系统的安全机制) 现在我们在读取手机内的SMS短信,先保存在我们自己定义的SQLite数据库中,然后读取SQLite数据库提取短信,并显示 SMS短信SQLite存取代码: package com.homer.sms; import java.sql.Date; imp

手机淘宝上线三大“黑科技”功能:测鞋码、试彩妆、用户说

"鞋子偏大偏小?" 对于淘宝上的鞋类卖家来说,最头疼的可能就是咨询鞋码问题了,此类询单会提高客服的时间成本. 那些非标准码的卖家总会反复叮嘱,"鞋子偏小,请拍大一码."以至于,即便是正常码,也逼得商家郑重其事地写上:"鞋码正常". 这个问题或许马上就能解决.目前,手淘宝贝详情页正在内测"手机测鞋码"功能,光着脚用手机拍一张照,系统就能自动算出大小,从而对照适合的鞋码. 另外,随着淘宝对内容的重视,详情页中"用户说&q

Android读取用户号码,手机串号,SIM卡序列号的实现代码

以下是对Android读取用户号码,手机串号,SIM卡序列号的实现代码进行了介绍,需要的朋友可以过来参考下   1.使用TelephonyManager提供的方法,核心代码: 复制代码 代码如下: TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE); String imei = tm.getDeviceId();       //取出IMEI Log.d(TAG, "IMEI:&quo

求怎样做一个基于贝叶斯的android平台垃圾短信过滤系统

问题描述 求怎样做一个基于贝叶斯的android平台垃圾短信过滤系统 大家好,我目前想做一个基于贝叶斯概率模型的android平台垃圾短信过滤系统,在网上也找了一些关于这一方面的文章和论文,但大多讲的偏理论些,在系统实现的架构和细节上讲的很少.在结构设计上遇到一些问题:1.分类器训练是放在系统软件内部好些还是在外部训练好分类器在放入软件中?2.中分分词问题,有哪些好的分词器,网上查了查开源的分词器iKanalyzer不知这个分词器在android上运行占用内存资源会不会很大? 请大家给些意见,先

后台-我想开发个短信平台接收用户发来的手机短信,怎么做?

问题描述 我想开发个短信平台接收用户发来的手机短信,怎么做? 我想开发个短信平台接收用户发来的手机短信,短信内容是某种固定格式的.接收到用户的短信后,后台程序解析然后再回复相应的格式,这个怎么做,需要什么硬件,或者有类似的短信运营商提供二次开发的接口. 解决方案 1.购买短信号码,支持上下行 2.开发上下行功能,并根据并键字开发相应的业务罗辑 解决方案二: 这个从第三方短信平台处购买一个三网合一的号码 然后进行关键字回复的二次开发即可

三成智能机用户愿放弃语音和短信业务

摘要: 昨天,爱立信消费者研究室发布的<中国城市消费者通信行为研究报告>显示,有将近三成智能手机用户愿意放弃语音和短信业务. 报 告显示,在关于如果语音.短信业务和数据业务 昨天,爱立信消费者研究室发布的<中国城市消费者通信行为研究报告>显示,有将近三成智能手机用户愿意放弃语音和短信业务. 报 告显示,在关于"如果语音.短信业务和数据业务二选一"的问卷调查中,中国城市用户中平均只有18%会选择数据业务,但是在智能手机用户中,愿意放弃语音和短信的用户比例就增加到了

android中可以通过两种方式调用接口发送短信_Android

第一:调用系统短信接口直接发送短信:主要代码如下: 复制代码 代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getDefault(); List<String> divideContents = smsManager.divideMessage(content); for (String text : divideContents) { smsManager.sendTextMessage("150xxxxxxxx&qu