【问题标题】:Opening Do Not Disturb preferences in Oreo在 Oreo 中打开“请勿打扰”偏好设置
【发布时间】:2018-04-30 14:30:23
【问题描述】:

我无法从我的应用程序打开系统DND preferences,以便用户可以创建或编辑Automatic Time rule

现状

我们的应用已经有一个类似的功能,它会在特定时间段(例如晚上 10 点到早上 8 点之间)禁用应用通知 LED、声音和振动,并在整个应用范围内应用。从 Android Oreo 开始,由于通知通道,我们的功能不再起作用。据我了解,唯一的解决方案是在系统偏好设置Automatic Time rule 中创建,然后在系统范围内应用。

我想做什么?

只是为了将 Oreo 用户从我的应用程序重定向到系统偏好设置,即。 请勿打扰首选项以添加或编辑时间规则。

问题

没有特定的Intent 打开请勿打扰首选项。我能找到的最接近的是Settings.ACTION_ZEN_MODE_PRIORITY_SETTINGS,它引导我找到this Preference screen。我也找到了action which I exactly need,但是如你所见,它被注释隐藏了。

这是否意味着无法打开此首选项屏幕,我应该使用另一种方法?

【问题讨论】:

  • This 可能会有所帮助。
  • 我试过了,但是这个意图打开了DND access。无论如何,谢谢!

标签: android android-intent android-preferences android-8.1-oreo


【解决方案1】:

我也有这个问题很久了,现在终于找到了适合我的解决方案:

Java

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.Settings$ZenModeSettingsActivity"));
startActivity(intent);

科特林

val intent = Intent()
intent.component = ComponentName("com.android.settings", "com.android.settings.Settings\$ZenModeSettingsActivity")
startActivity(intent)

【讨论】:

    【解决方案2】:

    如果您查看AndroidManifest.xml for the Settings app,您会发现Android 5.0 中已经有一个Activity Settings$ZenModeSettingsActivity(@cyb3rko 在https://stackoverflow.com/a/63713587/467650 中提到)。

    要将用户发送到“请勿打扰”屏幕,您可以像这样使用android.settings.ZEN_MODE_SETTINGS 操作:

    try {
        startActivity(new Intent("android.settings.ZEN_MODE_SETTINGS"));
    } catch (ActivityNotFoundException e) {
        // TODO: Handle activity not found
    }
    

    我希望意图过滤器比类名更稳定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 1970-01-01
      • 2013-08-24
      • 2015-10-01
      相关资源
      最近更新 更多