1

我在从我的应用程序中打开系统DND 首选项时遇到问题,以便用户可以创建或编辑自动时间规则

现在的情况

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

我想做的事?

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

问题

没有具体Intent打开“请勿打扰”偏好设置。我能找到的最接近的是Settings.ACTION_ZEN_MODE_PRIORITY_SETTINGS它引导我到这个 Preference screen。我还找到了我完全需要的操作,但正如您所看到的,它被注释隐藏了。

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

4

2 回答 2

0

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

爪哇

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)
于 2020-09-02T21:09:35.050 回答
0

如果您查看AndroidManifest.xml设置”应用程序,您会发现Android 5.0 已经有一个(如https://stackoverflow.com/a/63713587/467650Activity Settings$ZenModeSettingsActivity中的@cyb3rko 所述)。

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

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

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

于 2021-10-06T11:03:26.513 回答