前言

同样的最近有个新需求,需要将8.1 设备的来电功能和短信功能都屏蔽掉,特殊产品就是特殊定制,那就开始吧。

屏蔽短信功能

还可沿用之前的6.0 处理方法, 在 SmsReceiverService.java中 handleSmsReceived()中进行拦截分发

但是想了想这次准备搞点不一样的,我发现通讯录和之前6.0不太一样,8.1有个添加屏蔽联系人的功能,能够屏蔽指定电话和短信,也就是黑名单功能。所以此次就通过黑名单的方式进行拦截,通过下面几位老哥的详尽分析和打印日志找到修改地方

源码位置 frameworks\opt\telephony\src\java\com\android\internal\telephony\BlockChecker.java

public static boolean isBlocked(Context context, String phoneNumber) {

boolean isBlocked = false;

long startTimeNano = System.nanoTime();

//cczheng add [S]

log("phoneNumber==="+phoneNumber);

boolean isIntercept = Settings.Global.getInt(context.getContentResolver(),

Settings.Global.IS_INTERCEPT_TELE, 1) == 1;

if (isIntercept) {

log("Intercept tele don't delivery..... default is blocked");

return true;

}

//cczheng add [E]

try {

if (BlockedNumberContract.SystemContract.shouldSystemBlockNumber(

context, phoneNumber)) {

Rlog.d(TAG, phoneNumber + " is blocked.");

isBlocked = true;

}

} catch (Exception e) {

Rlog.e(TAG, "Exception checking for blocked number: " + e);

}

int durationMillis = (int) ((System.nanoTime() - startTimeNano) / 1000000);

if (durationMillis > 500 || VDBG) {

Rlog.d(TAG, "Blocked number lookup took: " + durationMillis + " ms.");

}

return isBlocked;

}

代码很简单,传递一个号码,去BlockedNumberContract数据库中查找是否存在,存在即为黑名单,拦截,不存在则不拦截。

为了实现拦截的功能,我在前面加了判断,Settings.Global.IS_INTERCEPT_TELE读取值,这是在Settings中自定义的,当然你也可以采用SharedPreference保存,这样就可以动态的控制达到屏蔽短信和电话的功能。

当然如果你需要有黑名单列表,可在此处增加xml或者数据库查询,再做对应的拦截返回true操作。

屏蔽来电功能

方法同上

相关的简单分析

BlockChecker的isBlocked()方法,电话和短信都会走这里,如果你需要单独分开,那么就需要去跟踪各自从哪里调用过来的。

通过全局搜索,找到如下目录

vendor\mediatek\proprietary\packages\services\Telecomm\src\com\android\server\telecom\callfiltering

•AsyncBlockCheckFilter.java

•BlockCheckerAdapter.java

•CallFilteringResult.java

•CallFilterResultCallback.java

•CallScreeningServiceFilter.java

•DirectToVoicemailCallFilter.java

•IncomingCallFilter.java

AsyncBlockCheckFilter中调用 BlockCheckerAdapter 的isBlocked(),而BlockCheckerAdapter最终调用到BlockChecker中,所以要单独屏蔽电话,可在AsyncBlockCheckFilter中操作

@Override

protected Boolean doInBackground(String... params) {

try {

Log.continueSession(mBackgroundTaskSubsession, "ABCF.dIB");

Log.addEvent(mIncomingCall, LogUtils.Events.BLOCK_CHECK_INITIATED);

return mBlockCheckerAdapter.isBlocked(mContext, params[0]);

} finally {

Log.endSession();

}

}

接下来再来看短信的

vendor\mediatek\proprietary\frameworks\opt\telephony\src\java\com\mediatek\internal\telephony\cdma\MtkCdmaInboundSmsHandler.java

vendor\mediatek\proprietary\frameworks\opt\telephony\src\java\com\mediatek\internal\telephony\gsm\MtkGsmInboundSmsHandler.java

都是直接调用BlockChecker的isBlocked()方法

在Settings中增加Switch控制是否启用拦截

效果图

实际上就是添加一个SwitchPreference来控制 Settings.Global.IS_INTERCEPT_TELE 的值

在安全性和位置信息中添加 拦截设置选项

源码位置 vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/SecuritySettings.java

仿照security_settings_misc.xml增加一份 security_settings_blockcheck.xml

android:title="@string/security_settings_title">

android:persistent="false">

android:key="is_intercept"

android:title="@string/is_intercept" android:summary="@string/is_intercept_summary"/>

在SecuritySettings中findPreference("is_intercept"),监听onPreferenceChange()事件,将回调结果 value 保存到IS_INTERCEPT_TELE

@Override

public boolean onPreferenceChange(Preference preference, Object value) {

boolean result = true;

final String key = preference.getKey();

final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils();

if (KEY_IS_INTERCEPT.equals(key)) {

Settings.Global.putInt(getContentResolver(), Settings.Global.IS_INTERCEPT_TELE,

((Boolean) value) ? 1 : 0);

}

return result;

}

总结

以上所述是小编给大家介绍的Android8.1 通过黑名单屏蔽系统短信和来电功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来电黑名单 java 软件,Android8.1 通过黑名单屏蔽系统短信和来电功能相关推荐

  1. 来电黑名单 java 软件_Android8.1 源码修改之通过黑名单屏蔽系统短信功能和来电功能...

    前言 之前写过一篇Android6.0 的屏蔽系统短信功能和来电功能,具体看这里 同样的最近有个新需求,需要将8.1 设备的来电功能和短信功能都屏蔽掉,特殊产品就是特殊定制,那就开始吧. 屏蔽短信功能 ...

  2. Android8.1 源码修改之通过黑名单屏蔽系统短信功能和来电功能

    前言 之前写过一篇Android6.0 的屏蔽系统短信功能和来电功能,具体看这里 同样的最近有个新需求,需要将8.1 设备的来电功能和短信功能都屏蔽掉,特殊产品就是特殊定制,那就开始吧. 屏蔽短信功能 ...

  3. 推荐一个用Java实现监控手机短信、来电、App的开源项目

    平日小伙伴有没有遇到过这样一个情况,玩着ipad或电脑,结果要求手机上的验证码,然后手忙脚乱的找手机在哪里? TJ君就一直想着是不是搞一个短信转发器,让这种短信直接转到我用的设备上,方便快速!可惜啊, ...

  4. Android软件开发之发送短信与系统短信库解析(三十)

    Android软件开发之发送短信与系统短信库解析 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/arc ...

  5. java实现语音发送,Java实现发送手机短信语音验证功能代码实例

    这篇文章主要介绍了java实现发送手机短信语音验证功能代码实例,www.cppcns.com文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 利用第三方 ...

  6. java语音验证码_Java实现发送手机短信语音验证功能代码实例

    这篇文章主要介绍了Java实现发送手机短信语音验证功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 利用第三方平台可以实现发送手机短信验证 ...

  7. SMSLib实现Java短信收发的功能

    blog迁移至: http://www.micmiu.com 用java实现短信收发的功能,目前一般项目中短信群发功能的实现方法大致有下面三种: 1. 向运行商申请短信网关,不需要额外的设备,利用运行 ...

  8. java 实现语音报警代码_Java实现发送手机短信语音验证功能代码实例

    这篇文章主要介绍了Java实现发送手机短信语音验证功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 利用第三方平台可以实现发送手机短信验证 ...

  9. java使用socket连接4G DTU设备发短信

    java使用socket连接4G DTU设备发短信测试Demo import java.io.IOException; import java.io.OutputStream; import java ...

最新文章

  1. 转 docker的下载与安装
  2. 船长带你看书——《selenium2 python 自动化测试实战》(2)浏览器操作
  3. layui多级联动下拉框的实现_简单三级联动的实现
  4. Fc冒险岛JAVA源码_FC冒险岛金手指
  5. 河南高二计算机会考excel,(完整版)高中信息技术学业水平考试Word、Excel操作题考点总结...
  6. ora-00959(表空间不存在) 的另一种可能性
  7. 高通8953 Android9.0修改设备节点权限问题
  8. 【高级篇 / SDWAN】(7.0) ❀ 03. SD-WAN 链路负载均衡的模式 ❀ FortiGate 防火墙
  9. RFID固定资产管理系统是如何盘点固定资产的?
  10. mc服务器常用指令_MC玩家必看常用指令大全
  11. getline 两次回车 解决办法
  12. Odoo权限详解一张图
  13. C#中转义字符\r, \n, \r\n, \t, \b, @作用
  14. 瓦伦达心态是什么瓦伦达心态在投资中应用
  15. 视频教程-Java面试Offer直通车-Java
  16. 如何打通AD、企业微信、飞书、钉钉等社交账号及内外网应用身份?
  17. 第五届新疆省ACM-ICPC程序设计竞赛(Java版)
  18. 昨天的拆图工具被大佬们指点了,还送了我一套秘籍!
  19. 全球航运港口高科技领军企业CIMC中集飞瞳,推出通用集装箱AI识别检测API飞瞳引擎,集装箱残损识别集装箱箱况检验集装箱箱号识别
  20. cmu计算机硕士申请,从西电到CMU,我的CS硕士申请总结

热门文章

  1. UR机械臂simscape正逆解仿真
  2. 【翻译】对计算机未来的10个预测或;我们的首席科学家的无稽之谈
  3. 2021年度总结2022年展望
  4. ios如何解除dns被劫持_iOS监控-DNS劫持
  5. JavaWeb(四)——MyBatis(持久层框架)
  6. php本地搭建局域网访问,解决wamp搭建PHP局域网其他电脑访问本地Apache网站
  7. 浅谈长轮询及其封装实现
  8. 2023夏-杂牌ngff的sata固态使用primocache的性能提升
  9. JavaScript 三目运算符的注意点
  10. 用python画小仓鼠教程_彩铅动物教程:萌萌的小仓鼠