The Bug
When calling await AndroidSmsRetriever.listenForSms() an Android 14 device the following runtime error is thrown:
E/MethodChannel#ars_sms_retriever/method_ch( 5182): java.lang.SecurityException: za.co.outsurance.app.dev: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.os.Parcel.createExceptionOrNull(Parcel.java:3057)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.os.Parcel.createException(Parcel.java:3041)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.os.Parcel.readException(Parcel.java:3024)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.os.Parcel.readException(Parcel.java:2966)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:5684)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1852)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1792)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:767)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at me.arsam.sms_retriever.SmsRetrieverPlugin.onMethodCall(SmsRetrieverPlugin.kt:212)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.os.Handler.handleCallback(Handler.java:958)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.os.Handler.dispatchMessage(Handler.java:99)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.os.Looper.loopOnce(Looper.java:205)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.os.Looper.loop(Looper.java:294)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.app.ActivityThread.main(ActivityThread.java:8177)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): Caused by: android.os.RemoteException: Remote stack trace:
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at com.android.server.am.ActivityManagerService.registerReceiverWithFeature(ActivityManagerService.java:13927)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2570)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2720)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.os.Binder.execTransactInternal(Binder.java:1339)
E/MethodChannel#ars_sms_retriever/method_ch( 5182): at android.os.Binder.execTransact(Binder.java:1275)
This is error is caused by a change in API in Android 14 (API level 34)
Steps to reproduce
Call await AndroidSmsRetriever.listenForSms() on an Android emulator targeting API Level 34 or higher
Suggest Resolution
In the SMSRetrieverPlugin.kt change lines 212 to 216 from:
The Bug When calling
await AndroidSmsRetriever.listenForSms()
an Android 14 device the following runtime error is thrown:This is error is caused by a change in API in Android 14 (API level 34)
Steps to reproduce
await AndroidSmsRetriever.listenForSms()
on an Android emulator targeting API Level 34 or higherSuggest Resolution In the SMSRetrieverPlugin.kt change lines 212 to 216 from:
to: