react-native-sms-user-consent
react-native-sms-user-consent copied to clipboard
Fix crash on API 33
Crash reproduced on: OnePlus 9RT 12/256 Android 13
Stack Trace:
java.lang.IllegalArgumentException: Receiver not registered: com.akvelon.reactnativesmsuserconsent.SmsBroadcastReceiver@c6d2cc7 at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:1709) at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1846) at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:822) at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:822) at com.akvelon.reactnativesmsuserconsent.ReactNativeSmsUserConsentModule.unsubscribe(ReactNativeSmsUserConsentModule.java:89) at com.akvelon.reactnativesmsuserconsent.ReactNativeSmsUserConsentModule.stopNativeSmsListener(ReactNativeSmsUserConsentModule.java:157) at java.lang.reflect.Method.invoke(Method.java) at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372) at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:149) at com.facebook.jni.NativeRunnable.run(NativeRunnable.java) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29) at android.os.Looper.loopOnce(Looper.java:211) at android.os.Looper.loop(Looper.java:300) at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:234) at java.lang.Thread.run(Thread.java:1012)
About fix:
- The documentation states that flags is accepted from the SDK version UPSIDE_DOWN_CAKE, for TIRAMISU it's not valid argument: https://developer.android.com/reference/android/content/Context#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter,%20java.lang.String,%20android.os.Handler,%20int)
Tested on devices after change:
- OnePlus 9RT (Android 13)
- Google Pixel 4a 5g (Android 14)
- POCO C51 (Android 13)
- Honor 8a (Android 9)
- Xiaomi Mi 9T (Android 10)