代码之家  ›  专栏  ›  技术社区  ›  Thought

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

  •  15
  • Thought  · 技术社区  · 8 年前

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

    Screenshot of Android's notification settings for the Camera application

    我可以用这个打开Android设置

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

    可供替代的

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

    3 回复  |  直到 6 年前
        1
  •  43
  •   Henry    5 年前

    我知道这是一个老问题,但对于那些在未来发现它的人来说:从奥利奥(API级别26)开始,现在有一个官方的deeplink 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,我看不出有什么区别。如果要添加此参数,请确保 Action ACTION_CHANNEL_NOTIFICATION_SETTINGS .

        2
  •  16
  •   Community CDub    8 年前

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

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

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

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

        3
  •  0
  •   Makvin    7 年前
    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);