eopeter / flutter_mapbox_navigation

Turn By Turn Navigation for Your Flutter Application
Apache License 2.0
209 stars 163 forks source link

i have a driving app that use flutter_mapbox_navigation as a navigation map but my app crash when the mapbox navigation is called Android 13 and android 14 version #358

Open adityabaudh7 opened 2 months ago

adityabaudh7 commented 2 months ago

FATAL EXCEPTION: main E/AndroidRuntime(25984): Process: com.example.driverapp, PID: 25984 E/AndroidRuntime(25984): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.driverapp/com.eopeter.fluttermapboxnavigation.activity.NavigationActivity}: java.lang.SecurityException: com.example.driverapp: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts E/AndroidRuntime(25984): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4164) E/AndroidRuntime(25984): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4322) E/AndroidRuntime(25984): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) E/AndroidRuntime(25984): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139) E/AndroidRuntime(25984): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96) E/AndroidRuntime(25984): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2685) E/AndroidRuntime(25984): at android.os.Handler.dispatchMessage(Handler.java:106) E/AndroidRuntime(25984): at android.os.Looper.loopOnce(Looper.java:230) E/AndroidRuntime(25984): at android.os.Looper.loop(Looper.java:319) E/AndroidRuntime(25984): at android.app.ActivityThread.main(ActivityThread.java:8893) E/AndroidRuntime(25984): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(25984): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608) E/AndroidRuntime(25984): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103) E/AndroidRuntime(25984): Caused by: java.lang.SecurityException: com.example.driverapp: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts E/AndroidRuntime(25984): at android.os.Parcel.createExceptionOrNull(Parcel.java:3069) E/AndroidRuntime(25984): at android.os.Parcel.createException(Parcel.java:3053) E/AndroidRuntime(25984): at android.os.Parcel.readException(Parcel.java:3036) E/AndroidRuntime(25984): at android.os.Parcel.readException(Parcel.java:2978) E/AndroidRuntime(25984): at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:6137) E/AndroidRuntime(25984): at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:6137) E/AndroidRuntime(25984): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(25984): at leakcanary.ServiceWatcher$install$4$2.invoke(ServiceWatcher.kt:93) E/AndroidRuntime(25984): at java.lang.reflect.Proxy.invoke(Proxy.java:1006) E/AndroidRuntime(25984): at $Proxy3.registerReceiverWithFeature(Unknown Source) E/AndroidRuntime(25984): at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1913) E/AndroidRuntime(25984): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1853) E/AndroidRuntime(25984): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1841) 2 E/AndroidRuntime(25984): at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:772) E/AndroidRuntime(25984): at com.eopeter.fluttermapboxnavigation.activity.NavigationActivity.onCreate(NavigationActivity.kt:142) E/AndroidRuntime(25984): at android.app.Activity.performCreate(Activity.java:8944) E/AndroidRuntime(25984): at android.app.Activity.performCreate(Activity.java:8913) E/AndroidRuntime(25984): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456) E/AndroidRuntime(25984): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4146) E/AndroidRuntime(25984): ... 12 more E/AndroidRuntime(25984): Caused by: android.os.RemoteException: Remote stack trace: E/AndroidRuntime(25984): at com.android.server.am.ActivityManagerService.registerReceiverWithFeature(ActivityManagerService.java:16580) E/AndroidRuntime(25984): at android.app.IActivityManager$Stub.onTransact$registerReceiverWithFeature$(IActivityManager.java:11530) E/AndroidRuntime(25984): at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2928) E/AndroidRuntime(25984): at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3195) E/AndroidRuntime(25984): at android.os.Binder.execTransactInternal(Binder.java:1375) E/AndroidRuntime(25984): I/TextToSpeech(25984): Setting up the connection to TTS engine... I/Mapbox (25984): [nav-native]: No PersistentConfig found at /data/user/0/com.example.driverapp/files/mbx_nav/tiles/navigation/config.json

I/Mapbox (25984): [nav-native]: Async version config for mapbox/driving-traffic resolved with version 2024_04_28-03_00_04 [{"map":{"tileset_version":"2024_04_28-03_00_04"}}] W/Mapbox (25984): [nav-sdk]: [BillingController] [code: TokenValidationFailed, message: Token validation failed for: this-can-be-skip-since-we-set-it-later] I/Process (25984): Sending signal. PID: 25984 SIG: 9 Lost connection to device.

Exited.

YoavSl commented 2 months ago

Same issue, downgrading the compileSdkVersion to 33 solves the issue. Please fix that as version 33 limits the functionality with other libraries. Thanks

wheelie33 commented 2 weeks ago

This is still not working despite changing the SDK version.

jayu146 commented 2 weeks ago

Hello Guys, I found the issue, Issue in registerReceiver b'coz in android 14 there is argument changed in android 14, So we need to change in registerReceiver.

android/src/main/kotlin/com/eopeter/fluttermapboxnavigation/activity/NavigationActivity.kt In this file you need to add the below codes for registerReceiver.

In the import section: 1) import androidx.core.content.ContextCompat

at registerReceiver replace this registerReceiver code: 1) registerReceiver( finishBroadcastReceiver, IntentFilter(NavigationLauncher.KEY_STOP_NAVIGATION), ContextCompat.RECEIVER_NOT_EXPORTED) 2) registerReceiver( addWayPointsBroadcastReceiver, IntentFilter(NavigationLauncher.KEY_ADD_WAYPOINTS), ContextCompat.RECEIVER_NOT_EXPORTED)

I hope it is works for you.

henycave commented 11 hours ago

When is this fix going to be included in master branch?

Hello Guys, I found the issue, Issue in registerReceiver b'coz in android 14 there is argument changed in android 14, So we need to change in registerReceiver.

android/src/main/kotlin/com/eopeter/fluttermapboxnavigation/activity/NavigationActivity.kt In this file you need to add the below codes for registerReceiver.

In the import section:

  1.  import androidx.core.content.ContextCompat

at registerReceiver replace this registerReceiver code:

  1. registerReceiver(
      finishBroadcastReceiver,
     IntentFilter(NavigationLauncher.KEY_STOP_NAVIGATION),
     ContextCompat.RECEIVER_NOT_EXPORTED)
  2.  registerReceiver(
         addWayPointsBroadcastReceiver,
       IntentFilter(NavigationLauncher.KEY_ADD_WAYPOINTS),
        ContextCompat.RECEIVER_NOT_EXPORTED)

I hope it is works for you.