【问题标题】:What's "AutomaticZenRule" ? What is it used for?什么是“AutomaticZenRule”?它是干什么用的?
【发布时间】:2017-10-17 09:38:46
【问题描述】:

背景

我刚刚注意到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. 有使用示例吗?

【问题讨论】:

  • 将此添加为评论,因为我没有足够的信息来实际回答所有问题。但在the android.provider.Settings class 中有一个值包含zen mode,暗示它可能与do not disturb mode 有关。非常模糊,但至少是一些东西。 (如果链接因某种原因失效,重要的部分是:Activity Action: Show Zen Mode (aka Do Not Disturb) priority configuration settings.

标签: android notificationmanager


【解决方案1】:

Zen Mode 只是请勿打扰 (DND) 模式的别称。 Android 可以根据规则激活免打扰模式。这些规则可以由系统提供,也可以由第三方应用提供。

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

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,您需要构造一个 AutomaticZenRuleinstance 并调用 NotificationManager.addAutomaticZenRule / updateAutomaticZenRule

  4. 之后,您可以通过调用 NotificationManager.setAutomaticZenRuleState 告诉 Android 您的规则的条件当前是否满足。

【讨论】:

  • 是的。您是否有任何示例,可以通过代码启用和禁用它?它需要许可吗?
【解决方案2】:

通过深入研究其他可用的文档,我能够在一定程度上理解 ZenMode(虽然它可能是我自己的版本,而不是正确的版本)。

我的理解如下-

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

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

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

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

多亏了你,我读到了一些新东西:)

【讨论】:

  • “请勿打扰”更改通知的创建/显示方式?使用“AutomaticZenrule”会以某种方式改变它?以哪种方式?
  • 只是猜测,它可能会静默显示通知,没有振动等。可以添加通知而不会对用户造成任何干扰。
  • 你能创建一个样本吗?我有 Android O,但我不知道如何使用这个新 API。
猜你喜欢
  • 1970-01-01
  • 2014-10-04
  • 2018-01-17
  • 2011-07-09
  • 2016-10-30
  • 2017-11-03
  • 2014-12-20
相关资源
最近更新 更多