Mobile-SDK-Android-V5 icon indicating copy to clipboard operation
Mobile-SDK-Android-V5 copied to clipboard

Mobile SDK V5.8.0 Crashes on Android 14 when app targets SDK API 34

Open rayw-dronesense opened this issue 1 year ago • 1 comments

Specs

Device: Samsung Galaxy S23 OS: Android 14 (One UI 6.0) Controller: DJI RC-N1 Aircraft: DJI Mini 3 MSDK Version: MSDK V5.8.0

Steps to reproduce

  1. Use MSDK V5.8.0
  2. Change compileSdkVersion and targetSdkVersion to 34
  3. Connect DJI RC-N1 to phone
  4. Crash reproduced

Stacktrace

--------- beginning of crash
2024-01-19 12:35:22.523  7447-8014  AndroidRuntime          pid-7447                             E  FATAL EXCEPTION: dji_background_thread
Process: com.dronesense.pilot, PID: 7447
java.lang.IllegalArgumentException: com.dronesense.pilot: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
    at android.os.Parcel.createExceptionOrNull(Parcel.java:3073)
    at android.os.Parcel.createException(Parcel.java:3053)
    at android.os.Parcel.readException(Parcel.java:3036)
    at android.os.Parcel.readException(Parcel.java:2978)
    at android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:7021)
    at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:752)
    at android.app.PendingIntent.getBroadcast(PendingIntent.java:735)
    at dji.sdk.datalink.usb.co_a.co_a(DJIUsbAccessoryReceiver.java:280)
    at dji.sdk.datalink.usb.co_a.co_i(DJIUsbAccessoryReceiver.java:5)
    at dji.sdk.datalink.usb.co_a$co_b.handleMessage(DJIUsbAccessoryReceiver.java:3)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.os.RemoteException: Remote stack trace:
    at com.android.server.am.ActivityManagerService.getIntentSenderWithFeatureAsApp(ActivityManagerService.java:6460)
    at com.android.server.am.ActivityManagerService.getIntentSenderWithFeature(ActivityManagerService.java:6403)
    at android.app.IActivityManager$Stub.onTransact$getIntentSenderWithFeature$(IActivityManager.java:11842)
    at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:3381)
    at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3195)
2024-01-19 12:35:22.732  7447-8014  DsLog                   pid-7447                             E  java.lang.IllegalArgumentException: com.dronesense.pilot: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
    at android.os.Parcel.createExceptionOrNull(Parcel.java:3073)
    at android.os.Parcel.createException(Parcel.java:3053)
    at android.os.Parcel.readException(Parcel.java:3036)
    at android.os.Parcel.readException(Parcel.java:2978)
    at android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:7021)
    at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:752)
    at android.app.PendingIntent.getBroadcast(PendingIntent.java:735)
    at dji.sdk.datalink.usb.co_a.co_a(DJIUsbAccessoryReceiver.java:280)
    at dji.sdk.datalink.usb.co_a.co_i(DJIUsbAccessoryReceiver.java:5)
    at dji.sdk.datalink.usb.co_a$co_b.handleMessage(DJIUsbAccessoryReceiver.java:3)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.os.RemoteException: Remote stack trace:
    at com.android.server.am.ActivityManagerService.getIntentSenderWithFeatureAsApp(ActivityManagerService.java:6460)
    at com.android.server.am.ActivityManagerService.getIntentSenderWithFeature(ActivityManagerService.java:6403)
    at android.app.IActivityManager$Stub.onTransact$getIntentSenderWithFeature$(IActivityManager.java:11842)
    at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:3381)
    at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3195)

rayw-dronesense avatar Jan 19 '24 17:01 rayw-dronesense

Agent comment from yating.liao in Zendesk ticket #99526:

Actually, the latest version of MSDK V5, which is MSDK V5.8, has not been adapted for Android 14 yet. We have already reported this issue to the team.

°°°

dji-dev avatar Jan 22 '24 09:01 dji-dev

Hi guys, unfortunately this was prematurely closed.

This still occurs with SDK 5.9.0:

2024-06-03 10:18:42.678 26256-26673 AndroidRuntime          pid-26256                            E  FATAL EXCEPTION: dji_background_thread
        Process: com.dronesense.pilot, PID: 26256
        java.lang.IllegalArgumentException: com.dronesense.pilot: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
        	at android.os.Parcel.createExceptionOrNull(Parcel.java:3073)
        	at android.os.Parcel.createException(Parcel.java:3053)
        	at android.os.Parcel.readException(Parcel.java:3036)
        	at android.os.Parcel.readException(Parcel.java:2978)
        	at android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:7041)
        	at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:752)
        	at android.app.PendingIntent.getBroadcast(PendingIntent.java:735)
        	at dji.sdk.datalink.usb.co_a.co_a(DJIUsbAccessoryReceiver.java:280)
        	at dji.sdk.datalink.usb.co_a.co_i(DJIUsbAccessoryReceiver.java:5)
        	at dji.sdk.datalink.usb.co_a$co_b.handleMessage(DJIUsbAccessoryReceiver.java:3)
        	at android.os.Handler.dispatchMessage(Handler.java:102)
        	at android.os.Looper.loopOnce(Looper.java:230)
        	at android.os.Looper.loop(Looper.java:319)
        	at android.os.HandlerThread.run(HandlerThread.java:67)
        Caused by: android.os.RemoteException: Remote stack trace:
        	at com.android.server.am.ActivityManagerService.getIntentSenderWithFeatureAsApp(ActivityManagerService.java:6488)
        	at com.android.server.am.ActivityManagerService.getIntentSenderWithFeature(ActivityManagerService.java:6431)
        	at android.app.IActivityManager$Stub.onTransact$getIntentSenderWithFeature$(IActivityManager.java:11943)
        	at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:3400)
        	at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3199)
2024-06-03 10:18:43.225 26256-26673 DsLog                   pid-26256                            E  java.lang.IllegalArgumentException: com.dronesense.pilot: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
        	at android.os.Parcel.createExceptionOrNull(Parcel.java:3073)
        	at android.os.Parcel.createException(Parcel.java:3053)
        	at android.os.Parcel.readException(Parcel.java:3036)
        	at android.os.Parcel.readException(Parcel.java:2978)
        	at android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:7041)
        	at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:752)
        	at android.app.PendingIntent.getBroadcast(PendingIntent.java:735)
        	at dji.sdk.datalink.usb.co_a.co_a(DJIUsbAccessoryReceiver.java:280)
        	at dji.sdk.datalink.usb.co_a.co_i(DJIUsbAccessoryReceiver.java:5)
        	at dji.sdk.datalink.usb.co_a$co_b.handleMessage(DJIUsbAccessoryReceiver.java:3)
        	at android.os.Handler.dispatchMessage(Handler.java:102)
        	at android.os.Looper.loopOnce(Looper.java:230)
        	at android.os.Looper.loop(Looper.java:319)
        	at android.os.HandlerThread.run(HandlerThread.java:67)
        Caused by: android.os.RemoteException: Remote stack trace:
        	at com.android.server.am.ActivityManagerService.getIntentSenderWithFeatureAsApp(ActivityManagerService.java:6488)
        	at com.android.server.am.ActivityManagerService.getIntentSenderWithFeature(ActivityManagerService.java:6431)
        	at android.app.IActivityManager$Stub.onTransact$getIntentSenderWithFeature$(IActivityManager.java:11943)
        	at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:3400)
        	at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3199)

rayw-dronesense avatar Jun 03 '24 14:06 rayw-dronesense

i am also facing same issue in 5.9.0

Fatal Exception: java.lang.IllegalArgumentException: org.clearspotai.app: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE. at android.os.Parcel.createExceptionOrNull(Parcel.java:3073) at android.os.Parcel.createException(Parcel.java:3053) at android.os.Parcel.readException(Parcel.java:3036) at android.os.Parcel.readException(Parcel.java:2978) at android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:7041) at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:752) at android.app.PendingIntent.getBroadcast(PendingIntent.java:735) at dji.sdk.datalink.usb.co_a.co_a(DJIUsbAccessoryReceiver.java:280) at dji.sdk.datalink.usb.co_a.co_i(DJIUsbAccessoryReceiver.java:5) at dji.sdk.datalink.usb.co_a$co_b.handleMessage(DJIUsbAccessoryReceiver.java:3) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loopOnce(Looper.java:230) at android.os.Looper.loop(Looper.java:319) at android.os.HandlerThread.run(HandlerThread.java:67)

letsmeetutsav avatar Jul 23 '24 10:07 letsmeetutsav