5 votos

La opción "Mostrar notificaciones" está atenuada en algunas aplicaciones. Cuál es la causa y cómo puedo cambiarla?

Hay algunas aplicaciones para las que la opción "Mostrar notificaciones" está atenuada, lo que le impide cambiar la política de notificaciones de esa aplicación.

  1. ¿Por qué o cuándo ocurre?
  2. Me he dado cuenta de este problema sólo para las aplicaciones del sistema. ¿Significa esto que sólo las aplicaciones del sistema pueden tener esta opción en gris?
  3. ¿Cómo puedo cambiar la política de notificaciones de estas aplicaciones?

(Haga clic en la imagen para ampliarla)

IMG: IMG: IMG:

Tengo un Android 4.2.1, 4.4.2 y 5.0.2 rooteado. Estoy al tanto de cambiar la política de notificación en Android 4.2.1 y 4.4.2. Puede mover el foco a Lollipop, sólo para el tercer punto.

0 votos

2 votos

Hay algunos aplicaciones para la configuración de notificaciones Algunos de ellos afirman que son capaces de hacerlo. No he probado ninguno, así que no puedo asegurarlo.

0 votos

@Izzy Gracias por el enlace. Usando notifications_policy.xml en Android 4.2 y 4.4, puedo desactivar fácilmente las notificaciones de cualquier aplicación, independientemente de la casilla de verificación en gris, por lo que no tengo que depender de aplicaciones de terceros. Pero la cuestión es más conceptual, la razón por la que hice tres preguntas bajo un capó.

4voto

jan Puntos 99

Con el acceso Root, hay algunas aplicaciones como Caja de herramientas 3c que permiten cambiar la configuración de las notificaciones de cualquier aplicación. Aplicación Ops es otro que te da el control sobre los permisos generales de todas las aplicaciones.

De hecho, puedes gestionar todos los permisos de las aplicaciones desde la línea de comandos con acceso Root. En Android 5.x, appops se ha añadido. Permite controlar los permisos generales de las aplicaciones.

Encuentre el nombre del paquete de su aplicación buscando en la lista generada por:

# pm list packages | sed 's/^package://'

Obtener una lista de permisos y sus mode (permitir/ignorar/denegar/por defecto) para una aplicación concreta:

(Tenga en cuenta que get no está disponible en 5.0.2 o versiones anteriores de Lollipop, sino que se introdujo en Android 5.1.0 )

# appops get <package_name>

Establecer el permiso de una aplicación en particular:

# appops set <package_name> <permission> <mode>

Para conseguir lo mismo que desmarcar la casilla "mostrar notificaciones" en el gestor de aplicaciones:

# appops set <package_name> POST_NOTIFICATION ignore

Según mi experiencia, el uso de deny como mode puede romper los appops para que los permisos no puedan ser accedidos o modificados desde una app, por lo que recomiendo usar ignore que es lo que utiliza el sistema.

Si en algún caso, acabas rompiendo el acceso a los ops de las aplicaciones a través de algo como el gestor de aplicaciones, puedes restablecer los permisos de una aplicación:

appops reset <package_name>

Para un mayor control de los permisos detallados, puede utilizar pm en el terminal. Esto funciona con las versiones más antiguas de Android.

Encuentre el nombre del paquete de su aplicación buscando en la lista generada por:

# pm list packages | sed 's/^package://'

A continuación, se enumeran los permisos de un determinado paquete:

# pm list permissions <package_name>

Encuentra los permisos de notificación:

# pm list permissions <package_name> | grep NOTIF

Conceder o revocar un determinado permiso:

# pm grant <package_name> <permission>
# pm revoke <package_name> <permission>

Los permisos que aparecen en el gestor de paquetes son muy detallados. Utilizar una aplicación capaz de gestionarlos puede ser una ruta más práctica.

0 votos

Hola! He añadido algo de información sobre get disponibilidad del parámetro porque me confundía ya que Android 5.0.2 o cualquier versión 5.0.x no lo tiene. Siéntase libre de rollback, pero ¿por qué lo haría? :)

0 votos

Jan, ¿cómo se puede revocar la capacidad de una aplicación para mostrar un brindis en Android 4.4.2? A diferencia de 4.2.1 Kitkat tiene appops.xml pero no tiene el binario appops para que hagamos algo con ese archivo. Y cambiar ese archivo no hace nada incluso después de reiniciar. Me interesa esto pregunta . A ver si puedes ayudar allí o al menos aquí. Gracias.

0 votos

@Firelord, gracias por hacer esa modificación. No era consciente de la diferencia de appops entre las versiones de Lollipop. Además, me he adelantado y he posteado en el enlace que me has proporcionado aquí . Se hizo un poco largo para publicarlo como comentario.

3voto

Andrew T. Puntos 2107

respuesta de jan ya aborda cómo cambiar la política de notificaciones para este tipo de aplicaciones (deshabilitar "mostrar notificaciones").

En cuanto a por qué y cuándo (o esencialmente, en qué condiciones se aplica), tu suposición de las aplicaciones del sistema va por buen camino.

Para ser exactos, como Sergey ha explicado en el comentario Sólo los paquetes firmados con el platform clave (del proveedor/fabricante, por ejemplo AOSP ) tendrán este privilegio. Estos paquetes son parte de la plataforma central . Otras aplicaciones preinstaladas (incluidas las aplicaciones con algunos privilegios especiales, que están firmadas con el shared o media y las aplicaciones "de sistema" (aplicaciones que se ponen en /system/app carpeta y derecho de acceso concedido) no se cuentan.

Resumen: a partir de la última versión (Android 5.1.1 Lollipop), la casilla se desactiva si:

  1. La aplicación está firmada con platform (parte de la plataforma central), o
  2. La aplicación no está instalada en el usuario actual (en caso de multiusuario)

Desde InstalledAppDetails.java (esto es lo que muestra "App Info"),

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);
    }
}

Nota :

  • Utils.isSystemPackage() devuelve true sólo para los paquetes firmados con el platform clave.
  • Esto no se aplica en Android 6.0 Marshmallow debido a la revisión de la interfaz de usuario de App Info; no hay una casilla de verificación, sino que hay una configuración de notificaciones centralizada por aplicación. Sin embargo, el principio subyacente sigue siendo el mismo: no se pueden bloquear las notificaciones de una aplicación que es el paquete del sistema .

0 votos

Gracias por el enlace. Pero en My Paranoid y RR Rom algunas aplicaciones del sistema como el visor de HTML, Launcher, Download y otras no tienen esa opción en gris. Se agradecería mucho que se razonara un poco más sobre mi punto 1 y 2.

2 votos

@Firelord Utils.isSystemPackage() devuelve true sólo para los paquetes firmados por el platform que se debe utilizar sólo para los paquetes que forman parte de la plataforma central . Otras aplicaciones preinstaladas (incluidas las aplicaciones con algunos privilegios especiales, que están firmadas con el shared o media ) no se consideran aquí como aplicaciones del "sistema".

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X