Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix for RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED #2054

Closed
wants to merge 1 commit into from

Conversation

qliqdev
Copy link

@qliqdev qliqdev commented Mar 10, 2024

Fix for crash on Android API 34

2024-03-11 00:55:48.951  6797-6797  Capacitor               myapp.com                   D  Registering plugin instance: Share
2024-03-11 00:55:48.953  6797-6797  AndroidRuntime          myapp.com                   D  Shutting down VM
2024-03-11 00:55:48.958  6797-6797  AndroidRuntime          myapp.com                   E  FATAL EXCEPTION: main
                                                                                                    Process: myapp.com, PID: 6797
                                                                                                    java.lang.RuntimeException: Unable to start activity ComponentInfo{myapp.com/myapp.com.MainActivity}: java.lang.SecurityException: myapp.com: 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:3782)
                                                                                                    	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3922)
                                                                                                    	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:2443)
                                                                                                    	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:8177)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	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: myapp.com: 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:5684)
                                                                                                    	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 android.content.ContextWrapper.registerReceiver(ContextWrapper.java:755)
                                                                                                    	at com.capacitorjs.plugins.share.SharePlugin.load(SharePlugin.java:44)
                                                                                                    	at com.getcapacitor.PluginHandle.loadInstance(PluginHandle.java:115)
                                                                                                    	at com.getcapacitor.PluginHandle.load(PluginHandle.java:105)
                                                                                                    	at com.getcapacitor.PluginHandle.<init>(PluginHandle.java:65)
                                                                                                    	at com.getcapacitor.Bridge.registerPlugin(Bridge.java:664)
                                                                                                    	at com.getcapacitor.Bridge.registerAllPlugins(Bridge.java:620)
                                                                                                    	at com.getcapacitor.Bridge.<init>(Bridge.java:218)
                                                                                                    	at com.getcapacitor.Bridge.<init>(Unknown Source:0)
                                                                                                    	at com.getcapacitor.Bridge$Builder.create(Bridge.java:1539)
                                                                                                    	at com.getcapacitor.BridgeActivity.load(BridgeActivity.java:42)
                                                                                                    	at com.getcapacitor.BridgeActivity.onCreate(BridgeActivity.java:36)
                                                                                                    	at myapp.com.MainActivity.onCreate(MainActivity.java:78)
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8595)
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8573)
                                                                                                    	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456)
                                                                                                    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3764)
                                                                                                    	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3922) 
                                                                                                    	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:2443) 
                                                                                                    	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:8177) 
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                    	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:13927)
                                                                                                    	at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2570)
                                                                                                    	at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2720)
                                                                                                    	at android.os.Binder.execTransactInternal(Binder.java:1339)
                                                                                                    	at android.os.Binder.execTransact(Binder.java:1275)

…e specified when a receiver isn't being registered exclusively for system broadcasts
@qliqdev
Copy link
Author

qliqdev commented Mar 10, 2024

cap doctor

💊   Capacitor Doctor  💊 

Latest Dependencies:

  @capacitor/cli: 5.7.2
  @capacitor/core: 5.7.2
  @capacitor/android: 5.7.2
  @capacitor/ios: 5.7.2

Installed Dependencies:

  @capacitor/cli: 5.7.2
  @capacitor/core: 5.7.2
  @capacitor/android: 5.7.2
  @capacitor/ios: 5.7.2

@jcesarmobile
Copy link
Member

This has been addressed in main branch already for the Capacitor 6 release.
Android 14 changes are not backported to Capacitor 5.

@qliqdev
Copy link
Author

qliqdev commented Mar 12, 2024

This has been addressed in main branch already for the Capacitor 6 release.

Android 14 changes are not backported to Capacitor 5.

What about apps with Capacitor 5 running on newest Androids?

@jcesarmobile
Copy link
Member

If you keep using targetSDK 33 apps work on 34 and newer devices and doesn't crash, if you want to targetSDK 34 you have to use Capacitor 6.

@qliqdev qliqdev deleted the share-plugin-fix branch March 31, 2024 18:28
@qliqdev
Copy link
Author

qliqdev commented Mar 31, 2024

@jcesarmobile

I'm using 33 target

variables.gradle

ext {
    minSdkVersion = 22
    compileSdkVersion = 33
    targetSdkVersion = 33
    androidxActivityVersion = '1.7.0'
    androidxAppCompatVersion = '1.6.1'
    androidxMaterialVersion = '1.7.0'
    androidxCoordinatorLayoutVersion = '1.2.0'
    androidxBrowserVersion = '1.5.0'
    androidxCoreVersion = '1.10.0'
    androidxFragmentVersion = '1.5.6'
    junitVersion = '4.13.2'
    androidxJunitVersion = '1.1.5'
    androidxEspressoCoreVersion = '3.5.1'
    cordovaAndroidVersion = '10.1.1'
    versionName = '3.0.1'
    coreSplashScreenVersion = '1.0.1'
    androidxWebkitVersion = '1.6.1'
    firebaseMessagingVersion = '23.1.2'
    kotlin_version = '1.8.20'
}

But anyway on Android 34 catching

1 BUG

    android.os.Parcel.createExceptionOrNull(Parcel.java:3069)
    android.os.Parcel.createException(Parcel.java:3053)
    android.os.Parcel.readException(Parcel.java:3036)
    android.os.Parcel.readException(Parcel.java:2978)
    android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:6137)
    android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1913)
    android.app.ContextImpl.registerReceiver(ContextImpl.java:1853)
    android.app.ContextImpl.registerReceiver(ContextImpl.java:1841)
    android.content.ContextWrapper.registerReceiver(ContextWrapper.java:772)
    android.content.ContextWrapper.registerReceiver(ContextWrapper.java:772)
    com.capacitorjs.plugins.share.SharePlugin.load(SharePlugin.java:45)
    com.getcapacitor.PluginHandle.loadInstance(PluginHandle.java:115)
    com.getcapacitor.PluginHandle.load(PluginHandle.java:105)
    com.getcapacitor.PluginHandle.<init>(PluginHandle.java:65)
    com.getcapacitor.Bridge.registerPlugin(Bridge.java:664)
    com.getcapacitor.Bridge.registerAllPlugins(Bridge.java:620)
    com.getcapacitor.Bridge.<init>(Bridge.java:218)
    com.getcapacitor.Bridge.<init>(:0)
    com.getcapacitor.Bridge$Builder.create(Bridge.java:1539)
    com.getcapacitor.BridgeActivity.load(BridgeActivity.java:42)
    com.getcapacitor.BridgeActivity.onCreate(BridgeActivity.java:36)

2 BUG

    android.os.Parcel.createExceptionOrNull(Parcel.java:3073)
    android.os.Parcel.createException(Parcel.java:3053)
    android.os.Parcel.readException(Parcel.java:3036)
    android.os.Parcel.readException(Parcel.java:2978)
    android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:7021)
    android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:752)
    android.app.PendingIntent.getBroadcast(PendingIntent.java:735)
    com.capacitorjs.plugins.share.SharePlugin.share(SharePlugin.java:125)
    java.lang.reflect.Method.invoke(Method.java:0)
    com.getcapacitor.PluginHandle.invoke(PluginHandle.java:138)
    com.getcapacitor.Bridge.lambda$callPluginMethod$0(Bridge.java:800)
    com.getcapacitor.Bridge.$r8$lambda$ehFTi5f4HhVNFKTbCKAYDkpQYRA(:0)
    com.getcapacitor.Bridge$$ExternalSyntheticLambda3.run(:8)
    android.os.Handler.handleCallback(Handler.java:958)
    android.os.Handler.dispatchMessage(Handler.java:99)
    android.os.Looper.loopOnce(Looper.java:230)
    android.os.Looper.loop(Looper.java:319)
    android.os.HandlerThread.run(HandlerThread.java:67)

Ther is no pease of code where targetSdkVersion is defined as 34
image

@jcesarmobile
Copy link
Member

Then it might not be the same problem, please, create an issue and provide a sample app that reproduces it.

I tested the share plugin on Capacitor 5 on Android 14 devices using targetSDK 33 and didn't hit any crashes, but I have might missed something.

@YanouonaY
Copy link

Hello,
I've got the same problem with Android 14 on Samsung A54 and Capacitor 5. In my variables.gradle i set:

  • compileSdkVersion = 33
  • targetSdkVersion = 33

I cannot deploy on this phone, BUT I can to deploy on Montorola G53 (Android 14)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants