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, eg 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)Agrega lo siguiente a tus build.gradle(app) .
dependencies { // For Java implementation 'androidx.work:work-runtime:2.7.1' // For Kotlin implementation 'androidx.work:work-runtime-ktx:2.7.1' }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'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.
Agrega PendingIntent.FLAG_IMMUTABLE a tus intents pendientes.
Aquí hay un ejemplo -
PendingIntent pendingIntent = PendingIntent.getActivity(this, alarmID, notificationIntent, PendingIntent.FLAG_IMMUTABLE);
Para obtener más información, siga este enlace: https://developer.android.com/reference/android/app/PendingIntent#FLAG_IMMUTABLE
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
Intenta agregar permiso de alarma
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>Además de las respuestas de otros, cambié:
implementation 'com.google.firebase:firebase-messaging:20.0.0'para :
implementation 'com.google.firebase:firebase-messaging:23.0.0'y está funcionando ahora.
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);