android 打开免打扰模式,Android 6.0设置模块免打扰功能浅析
免打扰功能的入口在NotificationSettings中,
点击列表项跳转到ZenModeSettings。java
android:title="@string/zen_mode_settings_title"
settings:keywords="@string/keywords_sounds_and_notifications_interruptions"
android:fragment="com.android.settings.notification.ZenModeSettings" />
ZenModeSettings 继承了ZenModeSettingsBase,
ZenModeSettingsBase的子类还有ZenModeAutomationSettings,ZenModePrioritySettings,ZenModeRuleSettingsBase
其中ZenModeRuleSettingsBase是一个抽象类,它的子类有ZenModeEventRuleSettings,ZenModeExternalRuleSettings,ZenModeScheduleRuleSettings。android
ZenModeSettings 只是显示ZenModePrioritySettings和ZenModeAutomationSettings的入口web
android:title="@string/zen_mode_priority_settings_title"
android:fragment="com.android.settings.notification.ZenModePrioritySettings" />
android:title="@string/zen_mode_automation_settings_title"
android:fragment="com.android.settings.notification.ZenModeAutomationSettings" />
ZenModePrioritySettings负责自定义免打扰规则
能够对提醒、活动、消息、通话、重复来电者的免打扰规则进行设置。ide
对提醒的免打扰规则设置,调用NotificationManager的方法设置通知svg
public boolean setZenModeConfig(ZenModeConfig config, String reason) {
checkCallerIsSystem();
return mZenModeHelper.setConfig(config, reason);
}
mReminders.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (mDisableListeners) return true;
final boolean val = (Boolean) newValue;
MetricsLogger.action(mContext, MetricsLogger.ACTION_ZEN_ALLOW_REMINDERS, val);
if (val == mConfig.allowReminders) return true;
if (DEBUG) Log.d(TAG, "onPrefChange allowReminders=" + val);
final ZenModeConfig newConfig = mConfig.copy();
newConfig.allowReminders = val;
return setZenModeConfig(newConfig);
}
});
protected boolean setZenModeConfig(ZenModeConfig config) {
final String reason = getClass().getSimpleName();
final boolean success = NotificationManager.from(mContext).setZenModeConfig(config, reason);
if (success) {
mConfig = config;
if (DEBUG) Log.d(TAG, "Saved mConfig=" + mConfig);
onZenModeConfigChanged();
}
return success;
}
其余内容的通知设置均调用NotificationManager的setZenModeConfig方法进行设置spa
ZenModeAutomationSettings负责显示已有的通知规则和添加自定义通知规则
通知规则包括时间规则(经过ZenModeScheduleRuleSettings进行设置)和事件规则(经过ZenModeEventRuleSettings进行设置)。
通知规则的内容有规则名称、日期、开始和结束事件、免打扰规则code
事件通知规则和时间通知均继承自ZenModeRuleSettingsBase
开关控制的实如今这个父类中,切换开关仍然调用NotificationManager的setZenModeConfig(ZenModeConfig config, String reason)方法xml
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (DEBUG) Log.d(TAG, "onSwitchChanged " + isChecked);
if (mDisableListeners) return;
final boolean enabled = isChecked;
if (enabled == mRule.enabled) return;
MetricsLogger.action(mContext, MetricsLogger.ACTION_ZEN_ENABLE_RULE, enabled);
if (DEBUG) Log.d(TAG, "onSwitchChanged enabled=" + enabled);
mRule.enabled = enabled;
mRule.snoozing = false;
setZenModeConfig(mConfig);
if (enabled) {
final int toastText = getEnabledToastText();
if (toastText != 0) {
mEnabledToast = Toast.makeText(mContext, toastText, Toast.LENGTH_SHORT);
mEnabledToast.show();
}
} else {
if (mEnabledToast != null) {
mEnabledToast.cancel();
}
}
}
android 打开免打扰模式,Android 6.0设置模块免打扰功能浅析相关推荐
- android 免打扰模式吗,OPPOReno怎么设置免打扰模式?
常常在我们生活中可能在特定时间或者休息时间不喜欢被打扰,比如来电.信息等...这时候就可以开启免打扰模式,下面我们就来看看详细的教程. 1.免打扰可以设置自动开启或者手动开启,手动开启可通过桌面设置- ...
- Android打开相机,报出 android.os.FileUriExposedException: file:///storage/emulated/0/test/img.jpg exposed
执行以下代码后,打开相机 //调用相机自带的照相功能 指定图片目录 if (Environment.getExternalStorageState().endsWith(Environment.MED ...
- android 打开相册的权限,Android 启动系统相机,相册,裁剪图片及6.0权限管理
在日常开发中,我们经常需要用到上传图片的 功能,这个时候通常有两种做法,第一种,从相机获取,第二种,从相册获取.今天这篇博客主要讲解利用系统的Intent怎样获取? 主要内容如下 怎样通过相机获取我们 ...
- android打开本地音乐播放器,Android8.0打开手机所有的音乐播放器
上篇文章录取的电话音频,这是用来读取播放方法 //path 文件路径 public void play(String path) { Intent intent = new Intent(Intent ...
- android 自动开启调试模式,android user版本默认开启调试模式
由于项目需要,需要发布版本默认开启调试模式,修改方式如下: 1.开启开发者模式 context.getSharedPreferences(DevelopmentSettings.PREF_FILE,C ...
- android 8.1 夜间模式,android 快速实现夜间模式
最近项目中遇到了一个问题,夜间模式在8.0以上的手机中不起作用,查看了一下原因,是夜间模式实现方法的问题.分两种情况介绍一下 先看一下运行效果: 第一种 是目前项目中用到的,是以前的开发人员写的,存在 ...
- android 打开闪光灯,如何在Android中以编程方式打开前置闪光灯...
对于这个问题,你应该: >检查手电筒是否是 可用与否? >如果是,则关闭/打开 >如果没有,那么根据你的应用,你可以做任何事情 需要. 要检查设备中闪存的可用性: 您可以使用以下内容 ...
- android app英文 英文模式,Android APP 中英文切换
实习期间,师父要求做app的中英文切换,就顺便记录了下. 一.AndroidManifest.xml文件(清单文件) 在每个要切换语言的Activity下面添加: android:configChan ...
- android如何做夜间模式,Android实现日夜间模式的三种常用方法(一)
1.使用 setTheme的方法让 Activity重新设置主题: 2.设置 Android Support Library中的 UiMode来支持日间/夜间模式的切换: 3.通过资源 id 映射,回 ...
最新文章
- smartcrop.js智能图片裁剪库
- 《极乐空间》特效制作与渲染
- Google App Engine技术架构之Google App Engine的简介
- tar目录的-P参数
- C++ Primer 第10章 习题 10.18
- java set 取第一个_set集合取第一个元素的几种方法
- djl和ljl_使用Spring Boot和DJL进行深度学习
- Python解析access数据库(mdb文件或者accdb文件)
- 常见Linux发行版本(转载)
- mysql字段描述_详细的MySQL字段类型描述
- 五年技术工作的一点点感悟
- 三种坐标系经纬度转化小工具
- win10计算机管理员的权限才能删除,Win10文件夹删除不了需要管理员权限怎么办?Win10文件夹删除不了需要管理员权限的解决方法...
- 想要快速增肌?肌酸可以帮你高效获得肌肉和力量
- 学习笔记 | 通用能力提升
- 怎么样可以在阿里云搭建个人网站及域名绑定介绍
- 概率论与数理统计浙江大学笔记和课后答案
- 舵机常见问题原理分析及解决办法
- mysql数据库引擎(show engines)
- VehicleDynamicsAndCoontrol(四) -LONGITUDINAL VEHICLE DYNAMICS
热门文章
- Ubuntu搭建嵌入式开发(交叉编译)环境-转
- mysql中索引创建 查看和删除语句_MySQL索引的创建、删除和查看(学习中)
- [Python] L1-047 装睡-PAT团体程序设计天梯赛GPLT
- 蓝桥杯 ADV-80 算法提高 选最大数
- Spring 学习系列 -- Spring + Mybatis 从零开始配置多数据源访问
- P2604 [ZJOI2010]网络扩容
- 聊聊高并发(二十九)解析java.util.concurrent各个组件(十一) 再看看ReentrantReadWriteLock可重入读-写锁...
- “OpAfrica”行动:匿名者攻击南非武器采购机构
- SharePoint列表下拉框优化
- 第三次冲刺--软件工程