什么是“AutomaticZenRule”?它是干什么用的?

时间:2017-10-17 09:38:47

标签: android notificationmanager

背景

我刚刚注意到NotificationManager的一些函数处理了一个名为AutomaticZenRule的类:

https://developer.android.com/reference/android/app/NotificationManager.html#addAutomaticZenRule(android.app.AutomaticZenRule)

和其他人......

问题

查看AutomaticZenRule的文档,它仍然没有说明它是什么,它可以用于什么:

  

zen模式的规则实例信息。

我尝试了什么

在互联网上搜索,我只能在Commonsware blog post中看到,他们想知道它是什么:

  

目前还不清楚AutomaticZenRule是什么......

我几乎没有发现它。不是“禅模式”而不是“AutomaticZenRule”。

问题

  1. 什么是“禅模式”?

  2. 什么是“AutomaticZenRule”,我该怎么办?它与通知有什么关系?

  3. Android N上有什么特别之处,这个版本上添加了这个API吗?

  4. 是否有使用它的样本?

2 个答案:

答案 0 :(得分:1)

从挖掘到其他可用文档,我能够在某种程度上理解ZenMode(虽然它可以是我自己的版本而不是正确的版本)。

我的理解如下 -

Zen模式Do not Disturb模式,现在可以自动启用最新更新,这取决于诸如一天中晚些时候等因素,AutomaticZenrule可以是在请勿打扰模式下,希望通知不被屏蔽或抑制的应用程序使用。

为此,您的应用程序应通过将用户发送到与系统意图操作ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS匹配的活动来请求策略访问。

如果用户已授予对您的应用的通知政策的访问权限,那么即使在请勿打扰模式下,您也可以设置优先级通知。因此AutomaticZenrule对于说明应用程序的通知不被抑制的系统起着至关重要的作用。

虽然,我没有正在运行的示例代码,我想它应该在类似的行上,如启用设备管理代码或请求权限用例。

感谢你,我得阅读一些新内容:)

答案 1 :(得分:1)

禅宗模式只是免打扰(DND)模式的另一个名称。 Android可以根据规则激活DND模式。这些规则可以由系统提供,也可以由第三方应用提供。

在以下屏幕截图中,您可以看到两个系统提供的规则以及第三方应用程序“ Pixel Ambient Services”提供的“ Driving”规则:

DND rules

AutomaticZenRule可以将您自己的规则集成到Android系统中。要整合自己的规则,您必须遵循以下粗略步骤:

  1. 确保您具有访问DND策略(android.permission.ACCESS_NOTIFICATION_POLICY)的足够权限。有关详细信息,请参见NotificationManager.isNotificationPolicyAccessGranted()
  2. 为您的规则添加活动:

     <activity android:name="MyRuleConfigurationActivity">
        <meta-data android:name="android.service.zen.automatic.ruleType" android:value="My Rule" />
        <intent-filter>
          <action android:name="android.app.action.AUTOMATIC_ZEN_RULE"/>
        </intent-filter>
     </activity>
    
  3. 只要用户想要创建或编辑指定规则类型的规则,Android就会显示您的活动。在后一种情况下,Android将在NotificationManager#EXTRA_AUTOMATIC_RULE_ID中提供现有规则的ID。要将活动中的更改传播回android,您需要构造一个AutomaticZenRule实例并调用NotificationManager.addAutomaticZenRule / updateAutomaticZenRule

  4. 在那之后,您可以通过调用NotificationManager.setAutomaticZenRuleState来告诉Android您的规则条件当前满足/不满足。