Android系统设置之勿扰模式

项目中遇到车载机使用带通话功能的SIM卡,需要禁止来电功能。解决方案包括系统层面修改代码(不及时)、实现来电自动拒接(需权限)和设置勿扰模式(针对7.0到9.0的Android系统)。最终选择了通过设置勿扰模式来忽略来电,并提到在不同Android版本中代码的适应性问题。参考了多个技术文章。
摘要由CSDN通过智能技术生成

项目场景:

智能车载机

问题描述:

车载机使用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(){
   

            @Override
            public void onCallStateChanged(int state, String phoneNumber
安卓系统勿扰模式通常通过设置应用权限、操作系统级别的管理以及通知管理组件共同实现。下面是一个简化的逻辑概述: 1. **权限控制**:当用户开启勿扰模式时,系统会禁止应用程序发送声音通知。开发者在申请应用权限时,需要请求`VIBRATE`和`WAKE_LOCK`权限,用于震动提示而非响铃。 2. **广播接收者**:系统有一个默认的广播接收者(如`android.provider.Telephony.WAP PushReceiver`),当接收到新的消息时,它会被暂停处理,直到勿扰模式结束。 3. **通知渠道管理**:每个应用都有自己的通知渠道,系统会检查当前是否处于勿扰模式,并相应地控制该应用的通知显示。如果是在勿扰模式下,可能会选择静默通知或图标标记,而不实际发出声音。 4. **操作系统层面**:Android OS会在核心层面拦截响铃相关的系统信号(如电话、短信等),并在勿扰模式下阻止这些信号触发声音。 具体的代码逻辑涉及到ActivityManager、NotificationManager、PhoneStateListener和ContentObserver等组件。这里给出的是大概框架,详细代码通常隐藏在系统库内部,并不是公开的API可以直接查看。例如,在AndroidManifest.xml里设置BroadcastReceiver: ```xml <receiver android:name=".SilentModeReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> ``` 然后在` SilentModeReceiver`类中,检查系统状态并处理相应的逻辑: ```java public class SilentModeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (isDoNotDisturbActive()) { // 检查勿扰模式,处理静音通知 } } private boolean isDoNotDisturbActive() { // 使用系统API获取勿扰模式状态 } } ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值