项目场景:

智能车载机


问题描述:

车载机使用4G流量,但客户接入的是带通话功能的sim卡,客户测试过程中遇到有人拨号,来电音量不是静音情况下,居然通了。客户提出禁止来电功能。


原因分析:

尽管系统进行了裁剪,去掉了拨号和来电APP,但是来电等功能还是可以使用的,最后无人接通,系统通知栏出现了来电未接图标。


解决方案:

方案1,求助

系统开发人员在系统层修改代码,禁止来电及拨号功能,当然是行的通的,但是被告知不能及时修改,那么进行OTA升级可能要过段时间,可是应用马上到了发布日,就先自己想想办法了。当然如果你的小伙伴很给力,那么直接进行OTA升级就可以解决,应用层无需更改。

方案2,实现来电自动拒接

监听来电通知,在有电话进来的时候,拒接,注意:权限。

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

实现方法(注意我这边因为有系统编译的SDK包,所以可以直接调用,没有的话,可通过反射实现)

反射实现参考点击我

    private void  endCall(){AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);TelephonyManager  tm = (TelephonyManager) getSystemService(Service.TELEPHONY_SERVICE);tm.listen(new PhoneStateListener(){@Overridepublic void onCallStateChanged(int state, String phoneNumber) {super.onCallStateChanged(state, phoneNumber);Log.e("onCallStateChanged","state = "+state +"  phoneNumber = "+phoneNumber);if(state==TelephonyManager.CALL_STATE_RINGING){am.setRingerMode(AudioManager.RINGER_MODE_SILENT);//设置为静音模式,解决延迟导致的响铃问题tm.endCall();am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);//恢复普通模式,恢复声音}}},PhoneStateListener.LISTEN_CALL_STATE);}

方案3,设置勿扰模式

通过设置勿扰模式策略,设置在一些场景下,忽略来电,短信,通知,闹铃等,此处参考android 7.0的源码,路径com.android.settings.notification.ZenModePrioritySettings。

还是那个前提,因为是定制系统,我有系统SDK的jar包,并且是系统签名的app,所以直接调用。

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
public class ZenModePriorityUtils {public static void zenMode_switch(Context context,int categoryType,boolean allowed){NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);nm.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_PRIORITY);NotificationManager.Policy policy = nm.getNotificationPolicy();int priorityCategories = getNewPriorityCategories(policy,allowed,categoryType);NotificationManager.Policy newPolicy = new NotificationManager.Policy(priorityCategories, policy.priorityCallSenders, policy.priorityMessageSenders,policy.suppressedVisualEffects);NotificationManager.from(context).setNotificationPolicy(newPolicy);}private static boolean isPriorityCategoryEnabled(NotificationManager.Policy mPolicy,int categoryType) {return (mPolicy.priorityCategories & categoryType) != 0;}private static int getNewPriorityCategories(NotificationManager.Policy mPolicy,boolean allow, int categoryType) {int priorityCategories = mPolicy.priorityCategories;if (allow) {priorityCategories |= categoryType;} else {priorityCategories &= ~categoryType;}return priorityCategories;}
       //设置勿扰模式---重复来电者ZenModePriorityUtils.zenMode_switch(this,NotificationManager.Policy.PRIORITY_CATEGORY_REPEAT_CALLERS,false);//设置勿扰模式---来电ZenModePriorityUtils.zenMode_switch(this,NotificationManager.Policy.PRIORITY_CATEGORY_CALLS,false);//设置勿扰模式---媒体(设备有广告,媒体音量不加入勿扰模式)ZenModePriorityUtils.zenMode_switch(this,NotificationManager.Policy.PRIORITY_CATEGORY_MEDIA,true);//设置勿扰模式---讯息ZenModePriorityUtils.zenMode_switch(this,NotificationManager.Policy.PRIORITY_CATEGORY_MESSAGES,false);//设置勿扰模式---闹铃ZenModePriorityUtils.zenMode_switch(this,NotificationManager.Policy.PRIORITY_CATEGORY_ALARMS,false);//设置勿扰模式---提醒ZenModePriorityUtils.zenMode_switch(this,NotificationManager.Policy.PRIORITY_CATEGORY_REMINDERS,false);//设置勿扰模式---活动ZenModePriorityUtils.zenMode_switch(this,NotificationManager.Policy.PRIORITY_CATEGORY_EVENTS,false);

总结:

最终采用方案3,但需要注意的,由于7.0到9.0这部分代码,android进行了较大改动,部分设置需要在9.0上才能有效果。

感谢这几位:

https://www.jianshu.com/p/ab88284384e9
https://blog.csdn.net/ty_phone8/article/details/78193055

https://www.jianshu.com/p/a5662fad84b5

https://blog.csdn.net/u010381752/article/details/48113083
https://blog.csdn.net/guduxiake1106/article/details/51065633?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

Android系统设置之勿扰模式相关推荐

  1. Android Zenmode/DND(勿扰模式) 实现原理剖析

    引言 Android手机越来越多的向着用户体验提升方面靠近,那么Zenmode就会变得越来越重要. 近年来,也有很多的新功能依赖于ZenMode去实现,也有很多专利在这个方面申请成功. 举两个简单的例 ...

  2. android 勿扰模式代码,android Lollipop勿扰模式

    android的L新版本中增加了"打扰"的新功能,相信很多同学搞不明白.找了一篇介绍勿扰模式很好的文章,可惜是英文的,现翻译如下,相信读完此问,你会理解android对勿扰模式的设 ...

  3. android Lollipop勿扰模式

    android的L新版本中增加了"打扰"的新功能,相信很多同学搞不明白.找了一篇介绍勿扰模式很好的文章,可惜是英文的,现翻译如下,相信读完此问,你会理解android对勿扰模式的设 ...

  4. android 勿扰模式代码,Android N Zen Mode (勿扰模式)设置流程

    Android N去除了情景模式,取而代之的是勿扰模式.勿扰模式的入口有两处,下拉栏和设置声音里面.下面我们就从设置声音入口,看看勿扰模式的设置流程. 首先,勿扰模式的首页有三种选项,分别是仅允许优先 ...

  5. android 勿扰模式代码,勿扰模式代码结构简析

    勿扰模式是Android 7.0开始加入的功能.它的核心思想是屏蔽了通知的铃声.振动和展示. 代码分散在几部分. 1.设置代码在Settings中,ZenMode开头的一系列文件 /packages/ ...

  6. android 勿扰模式代码,android 勿扰模式代码结构简析

    勿扰模式是Android 7.0开始加入的功能.它的核心思想是屏蔽了通知的铃声.振动和展示. 代码分散在几部分. 1.设置代码在Settings中,ZenMode开头的一系列文件 /packages/ ...

  7. android 勿扰模式代码结构简析

    勿扰模式代码结构简析 标签: 勿扰模式 2017-08-08 11:05  60人阅读  评论(0)  收藏  举报   分类: android(59)  版权声明:本文为博主原创文章,未经博主允许不 ...

  8. 勿扰模式代码结构简析

    勿扰模式是Android 7.0开始加入的功能.它的核心思想是屏蔽了通知的铃声.振动和展示. 代码分散在几部分. 1.设置代码在Settings中,ZenMode开头的一系列文件 /packages/ ...

  9. GNOME 3.36正式发布,家长控制、勿扰模式、更加优雅的锁屏界面

    2020年3月11日,GNOME 3.36正式发布,被命名为 "Gresik", 是 GNOME 3 当前的最新版本.它包含了主要的新功能,以及许多小的改进和错误修复.总的来说,这 ...

最新文章

  1. 在3D世界中创建不同的相机模式——检查对象是否可见
  2. linker command failed with exit code 1 (use -v to see invocation),经典Xcode编译错误的出现和解决!...
  3. 图解GitHub和SourceTree入门教程
  4. 如何进行.NET高效开发
  5. [导入]Ajax初试
  6. vue新增属性是否会响应式更新?
  7. (篇九)C语言统计某个字母的个数、统计各种字符的个数、统计单词的个数
  8. 堪称神器的命令行工具系列——curl
  9. ie的window.open 未指明的错误_火灾无情预防先行 错误操作致火灾加重
  10. ITIL4 讲解: 知识管理
  11. pk8/x509.pem转换为keystore
  12. 019年中国航空三字代码对照表完全汇总
  13. nero刻录错误 序列号问题
  14. 开源硬件的知识产权管理
  15. unity reflect_Unity Reflect在这里
  16. SD-WAN,一场广域网的革命
  17. 用python计算邮费考虑是否加急,用python计算residuals
  18. uni - app的 nfc功能使用鱼住未来第三方插件完成
  19. 华东之旅--西塘第二天
  20. 内部类有哪些好处?什么时候使用内部类

热门文章

  1. Sze带你探秘法国手工皮鞋之旅完美落幕
  2. 自定义View的三种实现方式及自定义属性使用介绍
  3. 【面试总结】2019校招京东一面二面,及深信服技术面(已拿深信服offer),还有百度一面...
  4. 网上赚钱的方法有哪些?找到想干的项目,持之以恒
  5. win10 anaconda用conda命令安装
  6. 使用游标显示销售报表_oracle数据库期末考试试题及答案 -
  7. 程序切片知识点整理(程序依赖图、静态切片、动态切片)
  8. 新型联网安卓多层锁机木马分析
  9. 非线性问题:多项式回归
  10. Linux axel多线程下载工具