以编程方式访问应用程序通知设置[重复]

Posted

技术标签:

【中文标题】以编程方式访问应用程序通知设置[重复]【英文标题】:Access application notification settings programmatically [duplicate] 【发布时间】:2016-11-02 15:13:43 【问题描述】:

android 应用中,我有一个按钮,我希望它具有打开应用通知设置(在 Android 设置中)的功能。

我可以用这个打开安卓设置

startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);

但我想直接在我的应用通知设置上打开

替代方案

如果有办法以编程方式打开和关闭“阻止通知”,那也可以。

【问题讨论】:

添加一个布尔值,保存并在应用内添加设置。 【参考方案1】:

没有可让您直接深入链接到应用程序通知设置的公共 API。

您可以使用Settings.ACTION_APPLICATION_DETAILS_SETTINGS 深层链接到您的应用程序设置,但这不会将您直接带到通知屏幕。

Any way to link to the Android notification settings for my app? 有一个可行的解决方案,但由于它不是官方 API 的一部分,因此不能保证适用于所有设备或未来的 Android 版本。

如果有办法以编程方式打开和关闭“阻止通知”,那也可以

绝对不是。允许应用程序以编程方式打开和关闭其通知违背了让用户控制打开和关闭通知的目的。

【讨论】:

那么请不要使用 Settings.ACTION_APPLICATION_DETAILS_SETTINGS,谢谢 我用APP_NOTIFICATION_SETTINGS打开设置,如何打开子分类?【参考方案2】:
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);

【讨论】:

如何打开应用通知分类(默认)?在奥利奥。我们可以在其中更改声音、振动和其他设置 Intent settingsIntent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) .putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()) .putExtra(Settings.EXTRA_CHANNEL_ID, "channel_id"); startActivity(settingsIntent);【参考方案3】:

我知道这是一个老问题,但对于那些在未来发现它的人来说:从 Oreo(API 级别 26)开始,现在有一个官方深层链接 Intent 用于特定应用的通知设置。

Intent settingsIntent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        .putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName())
        .putExtra(Settings.EXTRA_CHANNEL_ID, MY_CHANNEL_ID);
startActivity(settingsIntent);

EXTRA_CHANNEL_ID 参数是可选的,根据the docs,将“突出显示该频道”。 FWIW,从 Android 8.1 开始,我看不出它有什么不同。如果要添加此参数,请确保您的 ActionACTION_CHANNEL_NOTIFICATION_SETTINGS

【讨论】:

如何打开应用notification category(默认)?在奥利奥。我们可以在其中更改声音、振动和其他设置。 为了打开特定频道的设置,请使用 new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS)

以上是关于以编程方式访问应用程序通知设置[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何通知应用程序以编程方式设置的滚动条值?

Watchkit:以编程方式设置全局色调

iOS:以编程方式将通知设置从“从不请求”更改为“拒绝”

如何以编程方式确定推送通知状态?

如何以编程方式使用 android studio 4.2.1 将我的应用程序图标设置为一个信号通知

在 iOS 中以编程方式禁用设置警报