Skip to content

[Amazon] Android 14 devices crash with receiver not exported #1621

Description

@snapwoodapps

My app targets Android 14 (targetSdkVersion 34). Android 14 requires runtime registered receivers to specify whether they are exported or not.

I'm seeing the following crash in the field when Amazon users install the app on their Android 14 phones and attempt to purchase.

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.sample/com.revenuecat.purchases.amazon.purchasing.ProxyAmazonBillingActivity}: java.lang.SecurityException: com.myapp.sample: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3822)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3963)
       at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2468)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:205)
       at android.os.Looper.loop(Looper.java:294)
       at android.app.ActivityThread.main(ActivityThread.java:8248)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)

Caused by java.lang.SecurityException: com.myapp.sample: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
       at android.os.Parcel.createExceptionOrNull(Parcel.java:3057)
       at android.os.Parcel.createException(Parcel.java:3041)
       at android.os.Parcel.readException(Parcel.java:3024)
       at android.os.Parcel.readException(Parcel.java:2966)
       at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:5713)
       at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1852)
       at android.app.ContextImpl.registerReceiver(ContextImpl.java:1792)
       at android.app.ContextImpl.registerReceiver(ContextImpl.java:1780)
       at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:755)
       at com.revenuecat.purchases.amazon.purchasing.ProxyAmazonBillingDelegate.onCreate(ProxyAmazonBillingDelegate.kt:24)
       at com.revenuecat.purchases.amazon.purchasing.ProxyAmazonBillingActivity.onCreate(ProxyAmazonBillingActivity.kt:47)
       at android.app.Activity.performCreate(Activity.java:8621)
       at android.app.Activity.performCreate(Activity.java:8599)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3804)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3963)
       at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2468)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:205)
       at android.os.Looper.loop(Looper.java:294)
       at android.app.ActivityThread.main(ActivityThread.java:8248)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)

Caused by android.os.RemoteException: Remote stack trace:
	at com.android.server.am.ActivityManagerService.registerReceiverWithFeature(ActivityManagerService.java:14008)
	at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2585)
	at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2763)
	at android.os.Binder.execTransactInternal(Binder.java:1358)
	at android.os.Binder.execTransact(Binder.java:1304)

Remember that the Amazon app store can be installed on any Android device and not just Amazon devices (which I agree won't have Android 14 for some time).

Can com.revenuecat.purchases:purchases-store-amazon be updated to be compatible with Android 14?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions