Skip to main content
replaced http://android.stackexchange.com/ with https://android.stackexchange.com/
Source Link

jan's answerjan's answer already addresses how to change the notification policy for such (disabled "show notifications") apps.

As for why and when (or essentially, in what condition it applies), your guess of system apps is on the right track.

To be exact, as Sergey has explained in the commentSergey has explained in the comment, only packages that are signed with the platform key (from vendor/manufacturer, e.g. AOSP) will have this privilege. These packages are part of the core platform. Other preinstalled apps (including apps with some special privileges, which are signed with the shared or media key) and "system" apps (apps which are put on /system/app folder and granted access right) are not counted.

Summary: as of the latest version (Android 5.1.1 Lollipop), the checkbox is disabled if:

  1. The app is signed with platform key (part of the core platform), or
  2. The app is not installed on the current user (in multi-user case)

From InstalledAppDetails.java (this is what "App Info" displays),

private CompoundButton mNotificationSwitch; // this is the "show notifications" checkbox

...

private void initNotificationButton() {

    ...

    if (Utils.isSystemPackage(mPm, mPackageInfo)) {
        mNotificationSwitch.setEnabled(false);
    } else if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
        // App is not installed on the current user
        mNotificationSwitch.setEnabled(false);
    } else {
        mNotificationSwitch.setEnabled(true);
        mNotificationSwitch.setOnCheckedChangeListener(this);
    }
}

Note:

  • Utils.isSystemPackage() returns true only for packages signed with the platform key.
  • This doesn't apply on Android 6.0 Marshmallow due to overhaul on App Info's user interface; there's no checkbox, instead there's a centralized notification settings per app. However, the underlying principle is still the same that you cannot block notifications on an app that is system package.

jan's answer already addresses how to change the notification policy for such (disabled "show notifications") apps.

As for why and when (or essentially, in what condition it applies), your guess of system apps is on the right track.

To be exact, as Sergey has explained in the comment, only packages that are signed with the platform key (from vendor/manufacturer, e.g. AOSP) will have this privilege. These packages are part of the core platform. Other preinstalled apps (including apps with some special privileges, which are signed with the shared or media key) and "system" apps (apps which are put on /system/app folder and granted access right) are not counted.

Summary: as of the latest version (Android 5.1.1 Lollipop), the checkbox is disabled if:

  1. The app is signed with platform key (part of the core platform), or
  2. The app is not installed on the current user (in multi-user case)

From InstalledAppDetails.java (this is what "App Info" displays),

private CompoundButton mNotificationSwitch; // this is the "show notifications" checkbox

...

private void initNotificationButton() {

    ...

    if (Utils.isSystemPackage(mPm, mPackageInfo)) {
        mNotificationSwitch.setEnabled(false);
    } else if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
        // App is not installed on the current user
        mNotificationSwitch.setEnabled(false);
    } else {
        mNotificationSwitch.setEnabled(true);
        mNotificationSwitch.setOnCheckedChangeListener(this);
    }
}

Note:

  • Utils.isSystemPackage() returns true only for packages signed with the platform key.
  • This doesn't apply on Android 6.0 Marshmallow due to overhaul on App Info's user interface; there's no checkbox, instead there's a centralized notification settings per app. However, the underlying principle is still the same that you cannot block notifications on an app that is system package.

jan's answer already addresses how to change the notification policy for such (disabled "show notifications") apps.

As for why and when (or essentially, in what condition it applies), your guess of system apps is on the right track.

To be exact, as Sergey has explained in the comment, only packages that are signed with the platform key (from vendor/manufacturer, e.g. AOSP) will have this privilege. These packages are part of the core platform. Other preinstalled apps (including apps with some special privileges, which are signed with the shared or media key) and "system" apps (apps which are put on /system/app folder and granted access right) are not counted.

Summary: as of the latest version (Android 5.1.1 Lollipop), the checkbox is disabled if:

  1. The app is signed with platform key (part of the core platform), or
  2. The app is not installed on the current user (in multi-user case)

From InstalledAppDetails.java (this is what "App Info" displays),

private CompoundButton mNotificationSwitch; // this is the "show notifications" checkbox

...

private void initNotificationButton() {

    ...

    if (Utils.isSystemPackage(mPm, mPackageInfo)) {
        mNotificationSwitch.setEnabled(false);
    } else if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
        // App is not installed on the current user
        mNotificationSwitch.setEnabled(false);
    } else {
        mNotificationSwitch.setEnabled(true);
        mNotificationSwitch.setOnCheckedChangeListener(this);
    }
}

Note:

  • Utils.isSystemPackage() returns true only for packages signed with the platform key.
  • This doesn't apply on Android 6.0 Marshmallow due to overhaul on App Info's user interface; there's no checkbox, instead there's a centralized notification settings per app. However, the underlying principle is still the same that you cannot block notifications on an app that is system package.
update little bit info related to Android 6.0 Marshmallow
Source Link
Andrew T.
  • 16.5k
  • 10
  • 76
  • 127

jan's answer already addresses how to change the notification policy for such (disabled "show notifications") apps.

As for why and when (or essentially, in what condition it applies), your guess of system apps is on the right track.

To be exact, as Sergey has explained in the comment, only packages that are signed with the platform key (from vendor/manufacturer, e.g. AOSP) will have this privilege. These packages are part of the core platform. Other preinstalled apps (including apps with some special privileges, which are signed with the shared or media key) and "system" apps (apps which are put on /system/app folder and granted access right) are not counted.

Summary: as of the latest version (Android 5.1.1 Lollipop), the checkbox is disabled if:

  1. The app is signed with platform key (part of the core platform), or
  2. The app is not installed on the current user (in multi-user case)

From InstalledAppDetails.java (this is what "App Info" displays),

private CompoundButton mNotificationSwitch; // this is the "show notifications" checkbox

...

private void initNotificationButton() {

    ...

    if (Utils.isSystemPackage(mPm, mPackageInfo)) {
        mNotificationSwitch.setEnabled(false);
    } else if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
        // App is not installed on the current user
        mNotificationSwitch.setEnabled(false);
    } else {
        mNotificationSwitch.setEnabled(true);
        mNotificationSwitch.setOnCheckedChangeListener(this);
    }
}

Note:

  • Utils.isSystemPackage() returns true only for packages signed with the platform key.
  • This doesn't apply on Android 6.0 Marshmallow due to overhaul on App Info's user interface; there's no checkbox, instead there's a centralized notification settings per app. However, the underlying principle is still the same that you cannot block notifications on an app that is system package.

jan's answer already addresses how to change the notification policy for such (disabled "show notifications") apps.

As for why and when (or essentially, in what condition it applies), your guess of system apps is on the right track.

To be exact, as Sergey has explained in the comment, only packages that are signed with the platform key (from vendor/manufacturer, e.g. AOSP) will have this privilege. These packages are part of the core platform. Other preinstalled apps (including apps with some special privileges, which are signed with the shared or media key) and "system" apps (apps which are put on /system/app folder and granted access right) are not counted.

Summary: as of the latest version (Android 5.1.1 Lollipop), the checkbox is disabled if:

  1. The app is signed with platform key (part of the core platform), or
  2. The app is not installed on the current user (in multi-user case)

From InstalledAppDetails.java (this is what "App Info" displays),

private CompoundButton mNotificationSwitch; // this is the "show notifications" checkbox

...

private void initNotificationButton() {

    ...

    if (Utils.isSystemPackage(mPm, mPackageInfo)) {
        mNotificationSwitch.setEnabled(false);
    } else if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
        // App is not installed on the current user
        mNotificationSwitch.setEnabled(false);
    } else {
        mNotificationSwitch.setEnabled(true);
        mNotificationSwitch.setOnCheckedChangeListener(this);
    }
}

Note:

  • Utils.isSystemPackage() returns true only for packages signed with the platform key.
  • This doesn't apply on Android 6.0 Marshmallow due to overhaul on App Info's user interface; there's no checkbox, instead there's a centralized notification settings per app.

jan's answer already addresses how to change the notification policy for such (disabled "show notifications") apps.

As for why and when (or essentially, in what condition it applies), your guess of system apps is on the right track.

To be exact, as Sergey has explained in the comment, only packages that are signed with the platform key (from vendor/manufacturer, e.g. AOSP) will have this privilege. These packages are part of the core platform. Other preinstalled apps (including apps with some special privileges, which are signed with the shared or media key) and "system" apps (apps which are put on /system/app folder and granted access right) are not counted.

Summary: as of the latest version (Android 5.1.1 Lollipop), the checkbox is disabled if:

  1. The app is signed with platform key (part of the core platform), or
  2. The app is not installed on the current user (in multi-user case)

From InstalledAppDetails.java (this is what "App Info" displays),

private CompoundButton mNotificationSwitch; // this is the "show notifications" checkbox

...

private void initNotificationButton() {

    ...

    if (Utils.isSystemPackage(mPm, mPackageInfo)) {
        mNotificationSwitch.setEnabled(false);
    } else if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
        // App is not installed on the current user
        mNotificationSwitch.setEnabled(false);
    } else {
        mNotificationSwitch.setEnabled(true);
        mNotificationSwitch.setOnCheckedChangeListener(this);
    }
}

Note:

  • Utils.isSystemPackage() returns true only for packages signed with the platform key.
  • This doesn't apply on Android 6.0 Marshmallow due to overhaul on App Info's user interface; there's no checkbox, instead there's a centralized notification settings per app. However, the underlying principle is still the same that you cannot block notifications on an app that is system package.
fixed link to Lollipop 5.1.x code, added info about Marshmallow 6.0
Source Link
Andrew T.
  • 16.5k
  • 10
  • 76
  • 127

jan's answer already addresses how to change the notification policy for such (disabled "show notifications") apps.

As for why and when (or essentially, in what condition it applies), your guess of system apps is on the right track.

To be exact, as Sergey has explained in the comment, only packages that are signed with the platform key (from vendor/manufacturer, e.g. AOSP) will have this privilege. These packages are part of the core platform. Other preinstalled apps (including apps with some special privileges, which are signed with the shared or media key) and "system" apps (apps which are put on /system/app folder and granted access right) are not counted.

Summary: as of the latest version (Android 5.1.1 Lollipop), the checkbox is disabled if:

  1. The app is signed with platform key (part of the core platform), or
  2. The app is not installed on the current user (in multi-user case)

From InstalledAppDetails.javaInstalledAppDetails.java (this is what "App Info" displays),

private CompoundButton mNotificationSwitch; // this is the "show notifications" checkbox

...

private void initNotificationButton() {

    ...

    if (Utils.isSystemPackage(mPm, mPackageInfo)) {
        mNotificationSwitch.setEnabled(false);
    } else if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
        // App is not installed on the current user
        mNotificationSwitch.setEnabled(false);
    } else {
        mNotificationSwitch.setEnabled(true);
        mNotificationSwitch.setOnCheckedChangeListener(this);
    }
}

Note: Utils.isSystemPackage() returns true only for packages signed with the platform key.

  • Utils.isSystemPackage() returns true only for packages signed with the platform key.
  • This doesn't apply on Android 6.0 Marshmallow due to overhaul on App Info's user interface; there's no checkbox, instead there's a centralized notification settings per app.

jan's answer already addresses how to change the notification policy for such (disabled "show notifications") apps.

As for why and when (or essentially, in what condition it applies), your guess of system apps is on the right track.

To be exact, as Sergey has explained in the comment, only packages that are signed with the platform key (from vendor/manufacturer, e.g. AOSP) will have this privilege. These packages are part of the core platform. Other preinstalled apps (including apps with some special privileges, which are signed with the shared or media key) and "system" apps (apps which are put on /system/app folder and granted access right) are not counted.

Summary: as of the latest version (Android 5.1.1 Lollipop), the checkbox is disabled if:

  1. The app is signed with platform key (part of the core platform), or
  2. The app is not installed on the current user (in multi-user case)

From InstalledAppDetails.java (this is what "App Info" displays),

private CompoundButton mNotificationSwitch; // this is the "show notifications" checkbox

...

private void initNotificationButton() {

    ...

    if (Utils.isSystemPackage(mPm, mPackageInfo)) {
        mNotificationSwitch.setEnabled(false);
    } else if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
        // App is not installed on the current user
        mNotificationSwitch.setEnabled(false);
    } else {
        mNotificationSwitch.setEnabled(true);
        mNotificationSwitch.setOnCheckedChangeListener(this);
    }
}

Note: Utils.isSystemPackage() returns true only for packages signed with the platform key.

jan's answer already addresses how to change the notification policy for such (disabled "show notifications") apps.

As for why and when (or essentially, in what condition it applies), your guess of system apps is on the right track.

To be exact, as Sergey has explained in the comment, only packages that are signed with the platform key (from vendor/manufacturer, e.g. AOSP) will have this privilege. These packages are part of the core platform. Other preinstalled apps (including apps with some special privileges, which are signed with the shared or media key) and "system" apps (apps which are put on /system/app folder and granted access right) are not counted.

Summary: as of the latest version (Android 5.1.1 Lollipop), the checkbox is disabled if:

  1. The app is signed with platform key (part of the core platform), or
  2. The app is not installed on the current user (in multi-user case)

From InstalledAppDetails.java (this is what "App Info" displays),

private CompoundButton mNotificationSwitch; // this is the "show notifications" checkbox

...

private void initNotificationButton() {

    ...

    if (Utils.isSystemPackage(mPm, mPackageInfo)) {
        mNotificationSwitch.setEnabled(false);
    } else if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
        // App is not installed on the current user
        mNotificationSwitch.setEnabled(false);
    } else {
        mNotificationSwitch.setEnabled(true);
        mNotificationSwitch.setOnCheckedChangeListener(this);
    }
}

Note:

  • Utils.isSystemPackage() returns true only for packages signed with the platform key.
  • This doesn't apply on Android 6.0 Marshmallow due to overhaul on App Info's user interface; there's no checkbox, instead there's a centralized notification settings per app.
Bounty Ended with 100 reputation awarded by Firelord
incorporate info from comment, added more info, added example
Source Link
Andrew T.
  • 16.5k
  • 10
  • 76
  • 127
Loading
Source Link
Andrew T.
  • 16.5k
  • 10
  • 76
  • 127
Loading