文档章节

监视系统 电话和短信

 梦想家Peng
发布于 2016/03/03 10:18
字数 430
阅读 8
收藏 0
点赞 1
评论 0

呼出电话
-----------------------------------
【工作机制】
当呼出电话时,系统会发出一个有序广播,并且,将呼叫的电话号码通过setResultData()进行封装,最后,呼叫程序接收到该广播后,实现呼出。
【实现原理】
通过getResultData()获取电话号码,根据自定义的逻辑对号码进行判断,在有必要的时候,通过setResultData()修改电话号码。
权限:android.permission.PROCESS_OUTGOING_CALLS
广播Action:android.intent.action.NEW_OUTGOING_CALL

监听短信
-----------------------------------
【工作原理】当新的短信到来时,系统会发出广播,并且将短信的相关数据封装在Intent中。
【实现过程】
权限:android.permission.RECEIVE_SMS
广播Action:android.provider.Telephony.SMS_RECEIVED

eg:

public class SmsReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // 日志
        Log.d("tag", "SmsReceiver.onReceive()");

        // 短信的数据对象
        SmsMessage msg;
        // 从Intent中获取短信的内容,每次收到的短信可能由多条短信组成
        Object[] pdus = (Object[]) intent.getExtras().get("pdus");
        // 短信的数据
        byte[] pdu;
        // 循环获取的短信内容,即循环时每次读1条短信的数据
        for (int i = 0; i < pdus.length; i++) {
            // 获取短信的数据
            pdu = (byte[]) pdus[i];
            // 将数据封装为SmsMessage对象
            msg = SmsMessage.createFromPdu(pdu);
            // 获取短信的内容
            String address = msg.getOriginatingAddress();
            String body = msg.getMessageBody();
            Date date = new Date(msg.getTimestampMillis());
            // 日志输入显示
            Log.d("tag", "address -> " + address);
            Log.d("tag", "date -> " + date);
            Log.d("tag", "body -> " + body);
        }
    }

}

监听来电

-----------------------------------
【工作原理】当新的呼叫到来时,系统会发出广播。
【实现过程】
权限:

android.permission.READ_PHONE_STATE
android.permission.CALL_PHONE
广播Action:android.intent.action.PHONE_STATE
【挂断电话】
问题1:ITelephony可以实现挂断电话,但是该类型不可识别,则需要自定义ITelephony的aidl文件
问题2:获取ITelephony对象可以通过TelephonyManager的getITelephony()方法获取,但是,该方法是使用private修饰的私有方法

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 33
码字总数 15605
作品 0
深圳
新型病毒伪装成“Facebook” 专盗隐私

  【IT168 评论】近期,瑞星“云安全”系统拦截到一款新型Android病毒,该病毒伪装成知名社交网站“Facebook”的应用程序引诱网民下载安装,手机一旦中毒就会按照黑客指定命令发送短信或拨...

it168网站 ⋅ 2014/08/08 ⋅ 0

DES加密不靠谱:几条短信让SIM卡两分钟内被黑

每一个GSM手机都需要一个SIM卡, 这张卡应该不会出什么乱子把,不是这样的!德国柏林安全研究实验室的创始人Karsten Nohl 最近发现过去SIM卡常用的DES加密存在缺陷,可让黑客两分钟内获取SIM...

oschina ⋅ 2013/07/24 ⋅ 21

android权限大全2

android.permission.GLOBAL_SEARCH,允许程序使用全局搜索功能 硬件测试 android.permission.HARDWARE_TEST,访问硬件辅助设备,用于硬件测试 注射事件 android.permission.INJECT_EVENTS,允...

孟凡陆 ⋅ 2014/04/12 ⋅ 0

android 使用广播接收者监听短信和拦截外拨电话

如果你想监听自己或者别人接收到的短信,设置黑名单等功能,那么就需要以下功能监听短信,并进行提示或者响应的处理: 当系统收到短信时,会发出一个广播Intent,Intent的action名称为android...

长平狐 ⋅ 2012/09/03 ⋅ 0

使用短信猫和 AT 指令集

短信猫是wavecome的,通过AT指令集的命令: AT+CGMI 查看到短信猫的信息: WAVECOM MODEM 查看软件版本命令: AT+CGMR 看到的信息 640d09gg.Q2406B 1273604 091103 18:26 要执行at指令集,需...

鉴客 ⋅ 2011/09/08 ⋅ 2

电话拿外卖,短信看验证码,你的手机还是那个传统的通信工具吗?

摘要 微信的「语音聊天」功能与 iPhone 的电话功能平起平坐背后,是智能手机通信功能的迁移。 除了自己的以外,你还记得多少个电话号码? 去微信问了一圈,在我收到的答案里,大多数人只记得...

宋德 ⋅ 2017/12/15 ⋅ 0

iOS获取来电和短信发送状态

获取电话状态 在我想要了解iOS获取来电状态时,经常被这是不是允许的,是不是要调用私有库等问题困扰。费了好大劲终于解决了上面问题,你可以获取系统提供的电话相关状态,而且它不属于私有库...

hejunbinlan ⋅ 2016/05/13 ⋅ 0

Android权限——中英文对照表

访问登记属性 android.permission.ACCESSCHECKINPROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permission.ACCESSCOARSELOCATION,通过WiFi或移动基站的方式...

落叶-归根 ⋅ 2016/07/25 ⋅ 0

[Android]Android权限列表

权限列表访问登记属性android.permission.ACCESSCHECKINPROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置android.permission.ACCESSCOARSELOCATION,通过WiFi或移动基站...

程序袁_绪龙 ⋅ 2014/11/24 ⋅ 0

Android AndroidManifest.xml权限

访问登记属性 android.permission.ACCESSCHECKINPROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permission.ACCESSCOARSELOCATION,通过WiFi或移动基站的方式...

东西南瓜西葫芦 ⋅ 2015/12/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java序列化和反序列化

1、什么是序列化和反序列化 序列化:把对象转换为字节序列的过程。 反序列化:把字节序列恢复成对象的过程。 2、被序列化的类需要实现serializable接口,只是为了标注该对象是可以被序列化的...

IT-Mamba ⋅ 3分钟前 ⋅ 0

流式构建原理

流式构建需要达到分钟级的数据更新频率,Kylin采用类似于Spark Streaming的做法,每隔数分钟进行一次微构建。这边的构建需要考虑到一个延迟因素,分布式网络存在延迟等因素,该时间段的数据有...

无精疯 ⋅ 3分钟前 ⋅ 0

在maven项目工程编写solr代码,需要的依赖

solrJ <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>6.6.2</version> </dependency> <dependency> <groupId>org.apache.httpcomponents<......

爱运动的小乌龟 ⋅ 10分钟前 ⋅ 0

Spring Cloud Config

Spring Cloud Config application.yml 和 bootstrap.yml 区别 加载顺序 bootstrap.yml 先加载 application.yml 后加载 bootstrap.yml 用于应用程序上下文的引导阶段。 bootstrap.yml 由父 Sp...

施长成 ⋅ 20分钟前 ⋅ 0

MapReduce V2——YARN调度

一、MapReduce的局限性 1、JobTracker的单点问题 2、TaskTracker的作业信息分配的过于简单,当有资源消耗较大的或者时间较长的Task分配在同一个节点上的时候,容易失败或者等待时间过长 3、作...

cjxcloud ⋅ 21分钟前 ⋅ 0

EOS踩坑--脆弱的数据库

安装EOS我就不在这赘述了,来唠唠EOS踩到的坑,跟着官方文档走,然后到了同步数据的时候,Ctrl+Z结束了之后,再次运行报错 root@ubuntu:~# nodeos -e -p eosio --plugin eosio::chain_api_pl...

开源首席鉴黄师 ⋅ 21分钟前 ⋅ 0

对于程序员的招聘问题,作为软件人的一些吐槽和建议

作为软件人,找工作有时候似乎挺苦逼的。 说真的,让我去掉前面这句中“似乎”二字吧。就是苦逼!很多人都曾抱怨处在招聘的一方很糟糕——我们没有任何可靠的方式来甄别会写代码并且写得好的...

老道士 ⋅ 37分钟前 ⋅ 0

Linux下MySQL表名不区分大小写的设置方法(抄袭别人的)

Linux下MySQL表名不区分大小写的设置方法 MySQL表名不区分大小写的设置方法 在用centox安装mysql后,把项目的数据库移植了过去,发现一些表的数据查不到,排查了一下问题,最后发现是表名的大...

随风而浮沉 ⋅ 46分钟前 ⋅ 0

ubuntu下安装宋体simsun

sudo cp simsun.ttc /usr/share/fonts cd /usr/share/fonts sudo chmod 644 simsun.ttc 更新字体缓存: 代码: sudo mkfontscale 代码: sudo mkfontdir 代码: sudo fc-cache -fsv 安装chrome扩......

wangxuwei ⋅ 47分钟前 ⋅ 0

利用 ssh 传输文件

Linux 下一般可以用 scp 命令通过 ssh 传送文件: #把服务器上的 /home/user/a.txt 发送到本机的 /var/www/local_dir 目录下scp username@servername:/home/user/a.txt /var/www/local_dir...

大灰狼时间 ⋅ 57分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部