jose sanjaya
Problema
La orientación a S+ (versión 31 y superior) requiere que se especifique uno de FLAG_IMMUTABLE o FLAG_MUTABLE al crear un PendingIntent. Lo obtuve después de actualizar el SDK de destino a 31. El error siempre viene después de AlarmPingSender. Pero no conozco ninguna clase que haya usado AlarmPingSender.
2021-10-31 10:43:04.990 17031-17341/com.app.mobile D/AlarmPingSender: Register alarmreceiver to MqttServiceMqttService.pingSender.com.app.mobile-2e24ccbde048f2e91635651784
2021-10-31 10:43:04.993 17031-17341/com.app.mobile E/AndroidRuntime: FATAL EXCEPTION: MQTT Rec: com.app.mobile-2e24ccbde048f2e91635651784
Process: com.app.mobile, PID: 17031
java.lang.IllegalArgumentException: com.app.mobile: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
at android.app.PendingIntent.checkFlags(PendingIntent.java:375)
at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645)
at android.app.PendingIntent.getBroadcast(PendingIntent.java:632)
at org.eclipse.paho.android.service.AlarmPingSender.start(AlarmPingSender.java:76)
at org.eclipse.paho.client.mqttv3.internal.ClientState.connected(ClientState.java:1150)
at org.eclipse.paho.client.mqttv3.internal.ClientState.notifyReceivedAck(ClientState.java:987)
at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:118)
at java.lang.Thread.run(Thread.java:920)
Lo que ya hice
- Actualice WorkManager a 2.7.0
- configure AllProject para forzar el uso de WorkManager a 2.7.0
- cambie todos los PendingIntent existentes para usar FLAG_IMMUTABLE
- hay un código antiguo que todavía usa gcm y lo deshabilita
- Actualización de todo el paquete de Firebase (algunos dijeron que se debe a una versión posterior de análisis)
Biblioteca utilizada
- una señal
- quisco
- base de fuego
- administrador de trabajo
Agregue lo siguiente a su build.gradle(app)
dependencias
dependencies {
// For Java
implementation 'androidx.work:work-runtime:2.7.1'
// For Kotlin
implementation 'androidx.work:work-runtime-ktx:2.7.1'
}
Al-Amin
Solución posible
Actualice Google Analytics a Firebase Analytics. Espero que resuelva sus problemas. También actualice toda la biblioteca que está usando.
Para mí, las siguientes soluciones resuelven el problema.
Agregar PendingIntent.FLAG_IMMUTABLE
a tus intentos pendientes.
Aquí hay un ejemplo –
PendingIntent pendingIntent = PendingIntent.getActivity(this, alarmID, notificationIntent, PendingIntent.FLAG_IMMUTABLE);
Para mas información sigue esté link –
https://developer.android.com/reference/android/app/PendingIntent#FLAG_IMMUTABLE
-
Ya lo probé, pero el problema persiste.
– Joseph Sanjaya
31 de octubre de 2021 a las 7:54
-
Actualizar la biblioteca de Firebase resolvió el problema por mí.
– Paweł
16 de noviembre de 2021 a las 13:23
-
¿Cómo actualizar Google Analytics a Firebase Analytics?
– Benazir Sh
8 de febrero a las 15:36
-
Solo una nota para las personas que usan PendingIntent para invocar un método de una biblioteca de terceros… Puede emitir múltiples indicadores en el cuarto argumento usando el operador “o” en Kotlin o “|” operador en Java.
– varun
15 oct a las 14:11
Tuve este bloqueo pero no hay bibliotecas de terceros. Agregar esta importación con la última versión solucionará el bloqueo.
implementation 'androidx.work:work-runtime-ktx:2.7.0-beta01'
-
Funciona para mi. En mi caso cambió a: implementación (“androidx.work:work-runtime-ktx:2.7.1”)
– Cubo
26 de enero a las 17:09
Además de las respuestas de otros, cambié:
implementation 'com.google.firebase:firebase-messaging:20.0.0'
a :
implementation 'com.google.firebase:firebase-messaging:23.0.0'
y está funcionando ahora.
Después de varios intentos de arreglar esto, me di por vencido y traté de contactar a Qiscus. Y lanzan una nueva versión que maneja este cambio de comportamiento de Intención pendiente. Entonces, si alguien usa Qiscus y recibe este error, puede usar la última etiqueta
https://github.com/qiscus/qiscus-sdk-android/releases/tag/1.3.35
codificador
Este podría ser el problema con la versión de la biblioteca. Si tiene bibliotecas de versiones anteriores en su proyecto, debe actualizarlas a la última versión.
Por lo tanto, actualice la versión de la biblioteca de mensajería de Work Runtime y Firebase de la siguiente manera:
dependencies {
// For Java
implementation 'androidx.work:work-runtime:2.7.1'
// For Kotlin
implementation 'androidx.work:work-runtime-ktx:2.7.1'
implementation 'com.google.firebase:firebase-messaging:23.0.0'
...
}
Además, asegúrese de que el código de intención pendiente sea algo como esto,
PendingIntent pendingIntent = PendingIntent.getActivity(this, alarmID, notificationIntent, PendingIntent.FLAG_IMMUTABLE);
Dmitri Miyai
Si usa WorkManager en su proyecto, actualícelo a la última versión. Si no lo hace, actualice todas sus bibliotecas de Firebase y Google a la última versión. Enfrenté el mismo problema y estaba actualizando las bibliotecas una por una. Y encontré que actualizando com.google.android.gms:play-services-ads
a lo ultimo solucionado el problema
El mensaje de error dice que su error se debe a
org.eclipse.paho.android.service.AlarmPingSender.start(AlarmPingSender.java:76)
que parece relacionado con cualquier biblioteca MQTT que esté utilizando.– ianhanniballake
31 de octubre de 2021 a las 4:56
sí, yo también lo creo, pero no puedo averiguar qué biblioteca usó MQTT, supongo que es Qiscus, pero traté de actualizar a la última versión, pero el problema persiste.
– Joseph Sanjaya
31 de octubre de 2021 a las 7:54
Puedes revisar Escaneo de compilación de Gradle para ver qué dependencia extrae la biblioteca Eclipse Paho
– Lubos Mudrak
31 oct 2021 a las 9:29
Creo que este código github.com/eclipse/paho.mqtt.android/blob/master/… (línea 76) debe actualizarse para cumplir con las nuevas restricciones de Android. github.com/eclipse/paho.mqtt.android/issues/465
– Casio Landim
24 de enero a las 15:13
Simplemente actualice la versión de su biblioteca de Firebase Messaging a la última versión (23 o superior) y realice los cambios necesarios y listo. Solucionará ese problema. Pero sí, agregue ese FLAG_IMMUTABLE a su indicador PendingIntent también en el código de la aplicación.
– Harpreet
16 de noviembre a las 13:56