关闭

待高手解决Android短信拦截问题! @安卓大神

标签: android短信
580人阅读 评论(0) 收藏 举报
分类:

菜鸟一枚,按照书上copy来的代码做短信拦截,用虚拟机测试成功,但用真机测试却总是不成功。按照程序逻辑,收到短信后应该弹出一个Toast提示,可我这里真机收到短信后没有出现Toast提示,真机还是像正常那样照常收到短信。
这里写图片描述这里写图片描述这里写图片描述

下面是代码:
1、先在AndroidMainActivity.xml中添加权限

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

也添加了receiver

        <receiver
            android:name=".ShortMessageReceiver"
            android:enabled="true" >
            <intent-filter android:priority="800" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" >
                </action>
            </intent-filter>
        </receiver>

优先级按照网友说的设置到了800,书上没说让添加优先级。添加和不添加优先级的两种情况都测试了,都是在虚拟机上可行,在真机上就不行。很纳闷。

2、创建了一个新的类ShortMessageReceiver

package alex.example.receiver;

import java.util.Set;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;

public class ShortMessageReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            Set<String> keys = bundle.keySet();
            // 查看收到的广播包含哪些数据
            for (String key : keys) {
                Log.d("key", key);
            }
            // 获得收到的短信数据
            Object[] objArray = (Object[]) bundle.get("pdus");
            SmsMessage[] messages = new SmsMessage[objArray.length];
            // 循环处理收到的所有短信
            for (int i = 0; i < objArray.length; i++) {
                // 将每条短信数据转换成SmsMessage对象
                messages[i] = SmsMessage.createFromPdu((byte[]) objArray[i]);
                // 获得发送短信的电话号码和短信内容
                String s = "手机号:" + messages[i].getOriginatingAddress() + "\n";
                s += "短信内容:" + messages[i].getDisplayMessageBody();
                // 显示发送短信的电话号码和短信内容
                Toast.makeText(context, s, Toast.LENGTH_LONG).show();
            }
        }
    }
}

下面是虚拟机上的测试图
虚拟机测试可行

那为什么在真机上测试就不行呢,就不出Toast提示。

真机信息

型号 系统 安卓版本 内核版本
Coolpad 7295C MIUI-4.12.18 4.2.2 JDQ39 4.2.2 JDQ39

请大神给看看到底哪里出了问题,为什么用虚拟机测试成功,用真机测试却总是不成功!这里写图片描述这里写图片描述这里写图片描述

0
0
查看评论

Android5.0 短信拦截技术分析

Android在4.4之后,新增了一个default sms的机制,就是如果要在4.4之后实现短信拦截功能,就必须成为default sms,把所有短信相关的功能都包揽了,然后再做短信拦截。这种方式基本上不太现实,其实android这个限制就是一个短信数据库权限的限制,有访问短信数据库权限的方法即解...
  • android0011
  • android0011
  • 2016-03-02 23:59
  • 353

2016最新Android安卓短信拦截(过Android4.4和Android5.0和Android5.1)源码

目前安卓短信拦截主要有两种方式, 一种是监听短信接收通知广播,需要设置 android:name="android.permission.RECEIVE_SMS" /> android:name="android.permission.BROADCAST_SM...
  • wsx321145
  • wsx321145
  • 2015-09-12 16:51
  • 10905

如何在Android 4.4上实现短信拦截

4.4之后,新增了一个default sms的机制,详细的描述,可以参考我的另一篇文章《谈谈4.4中的新增功能对安全类软件的影响》。简而言之,就是如果要在4.4之后实现短信拦截功能,就必须成为default sms,把所有短信相关的功能都包揽了,然后再做短信拦截。但这种做法,适配性和兼容性的工作是非...
  • L173864930
  • L173864930
  • 2013-12-04 10:26
  • 67449

Android 电话和短信拦截

之前用的手机上没有黑名单功能,下载第三方的软件又觉得不安全,所以自己写了一个简单版本的凑合用,在这里记录一下。 因为之前有做过短信的拦截相关功能,但是电话拦截接触也不是很多,所以并没有做过详细的测试(自己在两款手机上跑过,都是ok的),在做这个功能的时候也参考过几篇博客,但是具体地址没记住。 ...
  • jeden
  • jeden
  • 2015-06-24 18:58
  • 1999

Android4.4如何实现短信拦截

android4.4对短信引入了一个全新的概念:默认短信应用。即Android用户可以在系统设置里面选择一个默认的短信应用,只有这个应用才能进行手机的基本短信操作。按照google自己的解释这样做的原因是因为很多第三方的APP使用了一些隐藏的API接口,应该是反射调用把,既然是反射调用的非常规接口,...
  • u010568616
  • u010568616
  • 2016-06-12 22:04
  • 941

Android短信拦截机制适配的坑(下)--4.4以上系统,主要是6.0

前一篇文章,Android短信拦截机制适配的坑(上)--4.4以下系统 介绍了广播接收的顺序,但是我明确说明在4.4以下系统,那么4.4及以上系统会遇到说明问题呢? 首先我们要来了解4.4系统短信的机制的改变,主要是这篇文章 http://android-developers.blogspot.co...
  • kangaroo835127729
  • kangaroo835127729
  • 2015-10-28 21:50
  • 11208

android 短信拦截并删除

目前在做短信拦截并删除,遇到了各种坑,但同时说明了安卓系统越来越安全了,很赞! 拦截短信: 目前4.4版本以上的系统是不可能拦截到了,原因: 4.4及其以后系统,只能设置一个默认的SMS短信app,但短信到达,首先会通知这个app,并且只有这个app有对短信数据库的修改权限和短信的发送权限,并...
  • ying1414058425
  • ying1414058425
  • 2016-05-09 10:37
  • 3795

Android 开发--CSDN博客大神汇总

转 http://blog.csdn.net/zhaokaiqiang1992/article/details/43731967本篇文章主要纪录我在学习过程中,发现的非常给力的CSDNBlog和个人Blog,这些Blog都有一个共同的特点,即内容详实,讲解透彻,也算是给后来的初学者指一条路吧!只要...
  • llp1992
  • llp1992
  • 2015-02-12 20:26
  • 14906

浅谈Android平台短信拦截的几种实现方式

移动端安全形势日益严峻。特别是在android平台,很多恶意软件在后台悄无声息的向运营商发送订阅服务短信,窃取用户资费。他们都对用户接收到的短信进行了拦截。下面是我总结的4中常用拦截方式。 Android短信拦截,总的来说可以分成两大类: 1. 监听短信数据库的变化 在代...
  • pinghegood
  • pinghegood
  • 2014-11-21 20:15
  • 3254

安卓学习,从初学者到大神

工欲善其事,必先利其器 虽然Android开发的门槛比较低,但是有件得心应手的兵器还是很有必要的。 开发设备 : Mac (作为开发者,我认为入手一台mac还是很有必要的,推荐还是mac pro,这种设备真的是早用早享受,如果你是学生党那么这真的是你对自己非常好的投资,...
  • u013034736
  • u013034736
  • 2015-05-19 13:23
  • 869
    个人资料
    • 访问:52658次
    • 积分:982
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:14篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论