Reputation: 163
I want to add support for Android 14 to my Flutter project, but I encountered an issue. The issue is with the flutter_inapp_purchase
package. When I initialize it, I get this error.
One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts.
E/MethodChannel#flutter_inapp(20036): at android.os.Parcel.createExceptionOrNull(Parcel.java:3071) E/MethodChannel#flutter_inapp(20036): at android.os.Parcel.createException(Parcel.java:3055) E/MethodChannel#flutter_inapp(20036): at android.os.Parcel.readException(Parcel.java:3038) E/MethodChannel#flutter_inapp(20036): at android.os.Parcel.readException(Parcel.java:2980) E/MethodChannel#flutter_inapp(20036): at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:6380) E/MethodChannel#flutter_inapp(20036): at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1876) E/MethodChannel#flutter_inapp(20036): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1811) E/MethodChannel#flutter_inapp(20036): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1799) E/MethodChannel#flutter_inapp(20036): at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:755) E/MethodChannel#flutter_inapp(20036): at com.android.billingclient.api.zzo.zzc(com.android.billingclient:billing@@5.1.0:1) E/MethodChannel#flutter_inapp(20036): at com.android.billingclient.api.zzp.zze(com.android.billingclient:billing@@5.1.0:3) E/MethodChannel#flutter_inapp(20036): at com.android.billingclient.api.BillingClientImpl.startConnection(com.android.billingclient:billing@@5.1.0:36) E/MethodChannel#flutter_inapp(20036): at com.dooboolab.flutterinapppurchase.AndroidInappPurchasePlugin.onMethodCall(AndroidInappPurchasePlugin.kt:84) E/MethodChannel#flutter_inapp(20036): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267) E/MethodChannel#flutter_inapp(20036): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295) E/MethodChannel#flutter_inapp(20036): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322) E/MethodChannel#flutter_inapp(20036): at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12) E/MethodChannel#flutter_inapp(20036): at android.os.Handler.handleCallback(Handler.java:1013) E/MethodChannel#flutter_inapp(20036): at android.os.Handler.dispatchMessage(Handler.java:101) E/MethodChannel#flutter_inapp(20036): at android.os.Looper.loopOnce(Looper.java:226) E/MethodChannel#flutter_inapp(20036): at android.os.Looper.loop(Looper.java:328) E/MethodChannel#flutter_inapp(20036): at android.app.ActivityThread.main(ActivityThread.java:9210) E/MethodChannel#flutter_inapp(20036): at java.lang.reflect.Method.invoke(Native Method) E/MethodChannel#flutter_inapp(20036): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586) E/MethodChannel#flutter_inapp(20036): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) I/flutter (20036): Error initializing platform state: PlatformException(error, com.icebreakrr.classic: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts, null, java.lang.SecurityException: com.icebreakrr.classic: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts I/flutter (20036): at android.os.Parcel.createExceptionOrNull(Parcel.java:3071) I/flutter (20036): at android.os.Parcel.createException(Parcel.java:3055) I/flutter (20036): at android.os.Parcel.readException(Parcel.java:3038) I/flutter (20036): at android.os.Parcel.readException(Parcel.java:2980) I/flutter (20036): at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:6380) I/flutter (20036): at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1876) I/flutter (20036): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1811) I/flutter (20036): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1799) I/flutter (20036): at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:755) I/flutter (20036): at com.android.billingclient.api.zzo.zzc(com.android.billingclient:billing@@5.1.0:1) I/flutter (20036): at com.android.billingclient.api.zzp.zze(com.android.billingclient:billing@@5.1.0:3) I/flutter (20036): at com.android.billingclient.api.BillingClientImpl.startConnection(com.android.billingclient:billing@@5.1.0:36) I/flutter (20036): at com.dooboolab.flutterinapppurchase.AndroidInappPurchasePlugin.onMethodCall(AndroidInappPurchasePlugin.kt:84) I/flutter (20036): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267) I/flutter (20036): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295) I/flutter (20036): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322) I/flutter (20036): at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12) I/flutter (20036): at android.os.Handler.handleCallback(Handler.java:1013) I/flutter (20036): at android.os.Handler.dispatchMessage(Handler.java:101) I/flutter (20036): at android.os.Looper.loopOnce(Looper.java:226) I/flutter (20036): at android.os.Looper.loop(Looper.java:328) I/flutter (20036): at android.app.ActivityThread.main(ActivityThread.java:9210) I/flutter (20036): at java.lang.reflect.Method.invoke(Native Method) I/flutter (20036): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586) I/flutter (20036): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) I/flutter (20036): )
Please help me to solve this issue.
I have tried to find a version of flutter_inapp_purchase
that supports Android 14, but I haven't been able to find one.
Upvotes: 0
Views: 479
Reputation: 999
You need to add receiver in AndroidManifest.xml
file like this,
<receiver
android:name="com.amazon.device.iap.ResponseReceiver"
android:exported="true">
<intent-filter>
<action android:name = "com.amazon.inapp.purchasing.NOTIFY"
android:permission = "com.amazon.inapp.purchasing.Permission.NOTIFY" />
</intent-filter>
</receiver>
File Reference from official example : https://github.com/dooboolab-community/flutter_inapp_purchase/blob/main/example/android/app/src/main/AndroidManifest.xml
Upvotes: 0