如何在系统设置中添加通知设置活动

17
在Android 5.0及以上版本,可以通过 设置 -> 声音和通知 -> 应用通知 -> 日历(例如) 来直接进入应用的通知设置页面。
我也知道这是清单文件中的一个标志,就像在这个DEV.BYTES talk中所描述的那样。
如何实现它,使用了什么标志?

以下是更详细的截图:
enter image description here


1
我本来期望在应用程序清单中看到一些东西,但似乎没有任何可能性。 - CommonsWare
2
@CommonsWare 在 Play Store 中利用通知偏好设置的日历应用是谷歌专有的。 - adneal
2个回答

30

你需要在想要通过你的AndroidManifest启动的Activity中添加Intent类别Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES。一个简单的示例可能如下:

    <activity android:name="com.example.packagename.YourSettingsActivity" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" />
        </intent-filter>
    </activity>

如需更多信息,请参考设置应用程序,特别是NotificationAppListAppNotificationSettings片段。

结果

example


4
谢谢您的提问,只是出于好奇,您是如何找到这个答案的呢? - Alex.F
6
@Alex.F 我查看了“设置”应用程序的源代码。 - adneal
请查看我在https://dev59.com/dIjca4cB1Zd3GeqPu1LI#37054087中的补充,了解如何更深入地指向PreferenceActivity子类中特定的Fragment。 - Gabriel
这在Android 8上不起作用,有没有更新的方法来解决它(我的应用程序针对7.1版本,也许你需要支持Android 8中的通知渠道才能使其工作或者其他什么?) - Mohamed Hafez
@adneal 如何打开“应用程序默认通知设置”以及其“子类别”? - Sagar

-1
  public void goToPushSettingPage(Context context){
    Intent intent=new Intent();
    if(android.os.Build.VERSION.SDK_INT>Build.VERSION_CODES.N_MR1){
        intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
        intent.putExtra(Settings.EXTRA_APP_PACKAGE,context.getPackageName());
    }else if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
        intent.putExtra(ConstUtil.PUSH_SETTING_APP_PACKAGE,context.getPackageName());
        intent.putExtra(ConstUtil.PUSH_SETTING_APP_UID,context.getApplicationInfo().uid);
    }else{
        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setData(Uri.parse(ConstUtil.PUSH_SETTING_URI_PACKAGE+context.getPackageName()));
    }
    startActivity(intent);
}

1
欢迎来到SO!请不要把这当成个人批评,但是您的帖子并没有回答问题。问题是“如何将通知设置活动添加到系统设置”,而您的答案是关于启动一个活动的。 - Alex.F
如何打开通知类别? - Sagar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接