Android手机安全软件之设置电话拦截返回音浅析

Android电话黑名单拦截核心接口NeighboringCellInfo.aidl与ITelephony.aidl详解 随着移动通信的普及,骚扰电话与电信诈骗频发,用户对隐私保护和通信安全的需求日益增长。Android系统通过Telephony框架提供底层支持,允许具备系统权限的应用干预电话流程。其中,基于AIDL的跨进程通信机制是实现系统级电话控制的核心路径。Android平台采用Binder机制实现跨进程通信(IPC),使得不同应用程序组件或系统服务能够在安全隔离的前提下进行高效交互。 阅读详情

Android手机安全软件之设置电话拦截返回音浅析

相信很多Android手机用户都用过手机安全软件的“电话拦截”功能,不管您用的是360安全卫士、腾讯手机管家,还是金山毒霸…,它们的共同特点就是您在设置来电拦截黑名单或开启/关闭来电等待时,界面并不友好(如下图所示),比如:会有拨号界面弹出再消失,或者手机会拨打一个号码,需要用户手动挂断或直到连接自动挂断。

第三方应用(即使具有root权限)在完成这两个功能时,无法避免拨号界面的出现。原因是这两个功能需要利用SIM卡呼叫转移、呼叫等待功能,拨打某个特定号码,所以设置该功能时会出现拨号界面。

以GSM为例,现在的实现中:

来电拦截返回音是通过拨以下特定号码实现的:

        String BUSY_NUMBER = "%23%2367%23";

        String EMPTY_NUMBER = "**67*13800000000%23";

        String POWEROFF_NUMBER = "**67*13810538911%23";

        String OUT_OF_SERVICE_NUMBER = "**67*13701110216%23";

呼叫等待开启和关闭是通过拨以下号码实现的:

        String GSM_CALL_WAIT_OPEN = "*43%23";

        String GSM_CALL_WAIT_CLOSE = "%2343%23";

所以通过一个第三方应用(即使它有root权限)去设置来电拦截返回音或开启/关闭呼叫等待时,就会出现拨号界面,用户体验不好。

 

一、原理分析

1、Android去电流程

下图右边蓝色框中粗略的给出了Android拨打电话的流程,其中蓝色填充的部分表示的App层phone应用,粉色填充部分表示的是framework层。从图中可看出,当拨出电话流程走到CallController的placeCall()后,会做两件事情:1),call CallManager的dial()方法拨打电话;2),不管拨打成功与否,都会将InCallScreen(拨号界面)展示到前端。当通过第三方应用设置来电拦截返回音时,根据来电拦截原理,会拨打某个特殊的号码,因此通过正常的Outgoing call流程一定不可避免拨打界面的出现。

二、改进和优化

我们从系统入手,彻底解决这个不友好的界面。完整的拨号流程会从app层->framework层,拨号界面的出现是在app层,因此我们避开拨号流程中app层的流程,通过我们自己的service直接调用framework层的拨号方法,从而避免了拨号界面的出现,消除了不好的用户体验。

i) 在init.rc中添加一个service(上图左边Service绿色方框所示),并授予它root权限。该service起来之后,等待client端的请求。并对client端暴露了一套SDK API接口(上图左边SDK API绿色方框所示),app应用通过调用这套API接口,设置、查询来电拦截返回音。我们提供的SDK 接口有:

public boolean setReturnCause(int reason, int simId);//设置来电拦截返回音

public String getCallForwardSetting(int reason, int simId);//查询呼叫转移号码(即返回音)

public boolean setCallWait(int status, int simId);//设置开启/关闭呼叫等待

ii) 在PhoneInterfaceManager中新增一个方法setReturnCause()(如上图左边绿色部分所示),当用户设置来电拦截返回音或呼叫等待时,返回音类型或呼叫等待待设类型会传递给telephony service,并通过PhoneInterfaceManager中的方法setReturnCause()(来电拦截和呼叫等待原理相同,因此走的同一套流程)去直接调用framework层的dial()方法,从而避免弹出InCallScreen。

从以上的分析可看出,针对设置来电返回音和开启/关闭呼叫等待功能会弹出拨号界面这一问题,第三方应用,不管它有没有root权限,都无法避免拨号界面的出现。而我们从系统入手,将拨号流程“拦腰”截断,从底层“静默”进行拨号流程,避免了上层的拨号界面的弹出。

 

三、存在问题

1、由于在“通话设置”->“来电转接”->“占线时转接”中可查询并修改返回音的状态,因此,对返回音设置途径并不唯一。用户可手动进入通话设置中设置,也可通过其他手机安全软件设置,又或者通过我们提供的API设置。这会就造成来电拦截返回音以最后一次设置为准(不管是通过哪种途径设置)。

2、正常拒接电话操作(比如有电话打入,此时用户直接挂断电话),android系统中默认的是用户忙(所以您打电话出去,接收者挂断您的电话,您会听到“您拨打的用户忙”)。而由于忙时转接已被设置,所以正常的来电被挂断就会走忙时转接流程,因此返回音也会相应的改成用户已经设置的返回音了。所以也许有的用户有过这样的经历:您拨打电话给某人,电话通了之后,返回“您拨打的用户已停机”等,可能是由于他设置了来电拦截黑名单时选择的返回音是“已关机”,从而修改了忙时转接的号码。

 

来电拦截及拦截后的提示音 先说下几个要点: 1. 电话拦截这个功能大家可能都知道了,就是利用反射原理调用ITelephony的隐藏方法来实现。这个就不说了,在附件的代码里有。 2.拦截后提示忙音/空号/已关机/已停机这个功能其实是要用到MMI指令,具体如何设置呼叫转移的指定可以参考这里 。 在本文中我们会用到“遇忙转移”转移的功能。中国移动的设置方式是 **67#电话号码#,取消方式为 ##67#。这两个指令可以直接在手机的拨号界面输入测试。ITelephony的endcall方法挂断电话后,会提示电话忙。如果事前设置好了忙时转移到一个空号/已关机/已停机的电话号码,就会提示您拨的电话号码是空号/已关机/已停机。其实大 立即下载

相关推荐

告别130MB/s瓶颈!用Zynq+NVMe实现1.2GB/s高速存储的PL数据分流实战

本文详细介绍了如何通过Zynq+NVMe实现1.2GB/s高速存储的PL数据分流方案,突破传统Zynq架构130MB/s的瓶颈。文章分享了PL直连NVMe的硬件架构设计、软件栈优化及性能调优实战技巧,帮助开发者实现高速数据流的稳定存储。

weixin_42653691的博客 372

设置电话拦截返回音浅析

相信很多Android手机用户都用过手机安全软件的“电话拦截”功能,不管您用的是360安全卫士、腾讯手机管家,还是金山毒霸…,它们的共同特点就是您在设置来电拦截黑名单或开启/关闭来电等待时,界面并不友好(如下图所示),比如:会有拨号界面弹出再消失,或者手机会拨打一个号码,需要用户手动挂断或直到连接自动挂断。   第三方应用(即使具有root权限)在完成这两个功能时,无法避免拨号界面的出现...

iteye_2439的博客 4537

刷题单向链表

实现一个数据结构,维护一张表(最初只有一个元素 11)。接下来 qq 行,每行表示一次操作,操作具体间题目描述。a[i] 里面放的是下一个元素,为0代表链表结束。如单链表1->4 -> 2->3->0用数组表示是。对于每个操作 2,输出一个数字,用换行隔开。第一行一个整数 qq 表示操作次数。

power的专栏 1714

小米手机拦截返回音设置不了_要怎样设置才让对方打电话进来是空号?

  最简单设置为空号的方法是通过手机管家软件,在【骚扰拦截】中添加电话黑名单,找到【来电拦截返回音】设置为空号,也可以讲电话呼叫转移或者设置为空号等方式。以下是详细介绍:  1、如果您只是针对特定的号码而不是所有的陌生号码,您可以使用手机管家软件,如360手机管家,进入之后找到【骚扰拦截】再找到【电话拦截】选项,然后找到【来电拦截返回音】选择【空号】,即完成设置;  2、或者是打开通讯录找到想要设...

weixin_40000131的博客 1万+

UR机械臂正逆运动学解析:从DH参数到8组解的完整求解策略

本文深入解析UR机械臂的正逆运动学求解策略,从DH参数原理到完整的8组解求解方法。详细介绍了正运动学的坐标变换过程,以及逆运动学中Atan2函数和三角恒等变换的应用,并揭示了8组解的产生机制。通过实际案例和调试技巧,帮助工程师掌握UR机械臂运动学求解的核心技术。

weixin_29094775的博客 414

MDM主数据清洗和编码集成说明

绝大多数的企业业务系统是伴随业务发展而建设的,但随着业务发展单一系统难以支撑企业业务闭环。MDM主数据管理平台可以满足企业数据治理的需求,本文针对主数据清洗和编码集成进行梳理。...

数通畅联 3321

小米手机拦截返回音设置不了_小米手机用户注意了!这几个超好用的功能你没用过就太可惜了...

欢迎转载,请注明出处,抄袭必究!作为国内互联网手机的“元老”,小米手机从诞生伊始似乎就自带玩机属性,在早期崛起的道路上,除了性价比,有趣好玩的功能和技巧也是一大重要因素。不过对于大部分用户来说,日常生活常用的就那么几个功能,平时也懒得去折腾,所以有些机友即便用了小米手机很长时间,可能还不是很了解。其实,教授发现,小米手机上有些功能虽然不是很常用,甚至有些人会觉得它们鸡肋,不过一旦你用过,可能就停不...

weixin_39827775的博客 1847

文本纠错项目代码调试

文本纠错项目调试

m0_67084346的博客 869

如何玩转携号转网?挖数据接口让我们切换自如

2019年,群雄割据几十年的四大移动运营商在国家强力部门的政策指导下,开始了反垄断经营,允许用户携号转网,打破了老死不相往来的传统经营模式。 携号转网:顾名思义就是带着在用的手机号码转移到别的网络里继续使用。 全国实行携号转网 比如:张三以前用的手机号是移动公司注册的,使用的号码也是移动号,现在要转网到联通公司,同样的李四的联通手机号要转网到移动公司这个过程就是携号转网。 自携号转网服务正式推行三年以来,已有超过3800万用户申请了携号转网服务,如此庞大的转网数量虽然满足了的用户选择,但给需要识别手

挖数据API接口的博客 1093

macOS安装Cplex+yalmip

macOS安装Cplex+yalmip

DS 4250

【软件系统架构】系列六:MBSE(基于模型的系统工程)

基于模型的系统工程(MBSE)是一种以模型为核心的系统工程方法论,通过结构化、可视化的模型取代传统文档,实现从需求到验证的全生命周期管理。MBSE采用SysML建模语言,包含需求、功能、架构和验证四大要素,支持自动追踪、仿真分析和代码生成。相比文档式工程,MBSE具有变更影响自动分析、跨团队协作和高可视化等优势,广泛应用于航空航天、汽车电子等领域。典型开发流程包括需求建模、行为建模、架构建模等阶段,配合MagicDraw、Cameo等工具链实现。MBSE正与数字孪生、AI技术融合,推动自动化建模和智能验证的

moton2017的博客 2785

Android手机安全软件之电话拦截功能浅析

Android手机安全软件之电话拦截功能浅析 目前中国市场,骚扰电话大量的充斥手机用户的生活,因此手机安全软件的电话拦截功能受到广泛关注和使用。但第三方应用级电话拦截功能的效果并不理想,比如拦截电话时已经响了一声、或出现短暂的来电界面,多款安全软件同时存在时可能发生冲突等,其本质原因是目前的第三方应用无法及时的、快速的判断出来电事件,拦截不及时造成的。现在@安卓安全小分队就分析其中的原理,并给出

android_squad的专栏 2531

ROSTCM6软件下载及语义网络分析详细操作教程(附网盘链接)

ROSTCM6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。

m0_64336780的博客 4万+

android拦截所有短信源码,Android手机防短信电话骚扰宝典 手机也会思考

随着Android支持机型的日益增多,使用Android手机的用户也越来越多了,大触摸屏+可媲美上网本的处理能力,让新入手Android机的用户惊喜不已。不过,再智能的手机也拦不住中国特色的垃圾短信/骚扰电话/响一声电话等等,今天我们就来介绍一款Android平台上防垃圾短信/骚扰电话的利器---360手机卫士Android版。生活中,我们经常会遇到这样的情况:凌晨,加班多时的你刚刚进入梦乡,“呤...

weixin_34945060的博客 791

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

小米手机拦截返回音设置不了_为了让自己的手机更好用,我利用了 MIUI 10 的这些功能...

2018 年 5 月 31 日小米 8 发布会上,小米手机的御用系统 MIUI 10 发布,随后开始向各款小米手机提供更新。这个“AI 加持的全面屏系统”发布至今已经半年,小雷(微信:leitech)也有了相当长时间的使用,接下来就让我分享自己是如何利用 MIUI 10 的功能让手机更好用的心得吧。1设置自定义快捷开关,不用再打开应用在 MIUI 9 及之前的版本中,通知栏快捷开关只能使用系统预设...

weixin_39587029的博客 1963

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

电话拦截

Android手机安全软件之电话拦截功能浅析   (2013-03-18 18:48:07) 转载▼     目前中国市场,骚扰电话大量的充斥手机用户的生活,因此手机安全软件的电话拦截功能受到广泛关注和使用。但第三方应用级电话拦截功能的效果并不理想,比如拦截电话时已经响了一声、或出现短暂的来电界面,多款安全软件同时存在时可能发生冲突等

lijuncai1988的专栏 2812

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

小米手机拦截返回音设置不了_为了让自己的手机更好用,我利用了MIUI 10的这些功能...

想要了解更多热门资讯、玩机技巧、数码评测、科普深扒,可以点击右上角关注我们的头条号:雷科技----------------------------------2018年5月31日小米8发布会上,小米手机的御用系统MIUI 10发布,随后开始向各款小米手机提供更新。这个“AI加持的全面屏系统”发布至今已经半年,小雷(微信:leitech)也有了相当长时间的使用,接下来就让我分享自己是如何利用MIUI...

weixin_40005795的博客 2095

Android - 电话拦截

拦截电话 这里,我们要实现黑名单中电话拦截的功能,为了侦听电话状态,我们需要获得系统的电话管理器等 // 获取到电话管理者 mTelephonyManager = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE); // 初始化电话状态监听 listener = new MyPhoneStateListener()

wuya_meiya的博客 631

Android实现手机号码拦截(附带源码)

Android实现手机号码拦截(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1586

android 电话号码标记,强化电话标记功能 360手机卫士3.0安卓版体验

作为“房产商”,上海仁恒置地集团营销总监姚伟示通常每天也要接到20个左右房产或其他推销电话。“现在已经形成了一个机械的对应方式,对于此类推销电话,很多人包括我自己已经麻木了。”针对这种情况,360手机卫士发布了3.0.0正式版,新版对智能云拦截系统进行了全新升级,骚扰拦截能力更加精准。尤其在拦截骚扰电话上,强化了陌生电话标记功能,形成了“人人为我,我为人人”的共同防治机制,骚扰电话顽疾有望得到遏制...

weixin_31181381的博客 1254

android 短信接口收拦截,给手机装“来点黑名单” 拒绝垃圾短信和电话

给手机装个“来电黑名单”有了手机之后,不自觉就被卷入信息漩涡中间。面对排山倒海的垃圾短信和骚扰电话,我们如何能拒绝?或者是“礼貌地拒绝”?其实,对于类似QQ、MSN上的“黑名单”诉求,有些手机如海尔、NEC自带此功能,另一些则有对应软件可下载,你只是没注意罢了。自己设置“黑白名单”360手机卫士是一款完全免费的手机安全软件,功能可简要概括为“防骚扰、防扣费、保护隐私”。这款软件的一大亮点是:拦截垃...

weixin_31244053的博客 738

android 黑名单中电话拦截

今天讲一下最近项目中刚做的黑名单拦截,其中可以拦截短信和电话 先讲一下拦截电话的操作 首先要注册一个监听电话广播的广播接收器。 在Manifest文件中 <receiver android:name=".Receiver.InterceptSmsReceiver" android:enabled="true" android:exported="true">

gongzhiyao37390814的博客 1793

告别骚扰电话!手把手教你搭建专属智能拦截系统(附完整代码)

本次我们使用的数据集包含大量真实手机号样本,分为「骚扰号码(bad)」和「正常号码(good)」两类,结构清晰,可直接用于模型训练。number(手机号) | label(标签)...Tips:如果觉得现有数据集不够贴合自己的需求,可以自行添加身边遇到的骚扰号码、常用正常号码,进一步提升模型识别准确率。整个搭建过程并不复杂,核心就是「用ResNet模型学习手机号特征,通过编码将手机号转为模型可识别的数据,再集成到手机端实现实时拦截」。

helloworlddm的博客 1059

电话拦截以及电话拦截后的提示音

1. 电话拦截 这个功能大家可能都知道了,就是利用反射原理调用ITelephony的隐藏方法来实现。这个就不说了,在附件的代码里有。 2.拦截后提示忙音/空号/已关机/已停机这个功能其实是要用到MMI指令,具体如何设置呼叫转移的指定可以参考这里 http://baike.baidu.com/view/206402.html?fromTaglist 。在 本文中我们会用到“遇忙转移”转移的功能。...

weixin_30611509的博客 487
上一篇: Android手机安全软件之电话拦截功能浅析
下一篇: 小分队线下技术交流会火热来袭!
鲶鱼团队
博客等级 码龄14年 36粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值