You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android SDK 35升级后DJI SDK触发RECEIVER_EXPORTED相关SecurityException求助

解决升级Android SDK 35后DJI SDK引发的广播接收器SecurityException

问题背景

把Android SDK从33升级到35后,Google Play预启动报告里抛出了SecurityException,错误提示广播接收器必须指定RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED(非系统专属广播场景)。从错误栈能看出,问题出在DJI SDK的UsbAccessoryService.registerAoaReceiver方法——它动态注册广播时没加这两个属性中的任何一个。

解决思路

1. 优先升级DJI SDK到最新兼容版

DJI官方已经针对Android 14(SDK 34及以上)的广播权限要求更新了SDK,直接升级到最新稳定版就能解决这个问题,新版本会自动处理广播注册时的导出属性,这是最省心的方案。

2. 静态注册USB相关广播接收器(临时方案)

如果暂时没法升级SDK,可以尝试把DJI SDK动态注册的USB广播改成静态注册:

  • 在AndroidManifest.xml里添加对应的广播接收器,明确指定android:exported属性(根据实际需求选true或false):
<receiver
    android:name="dji.midware.usb.P3.UsbAccessoryReceiver" <!-- 替换为DJI SDK中实际的接收器类名 -->
    android:exported="true">
    <intent-filter>
        <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
        <action android:name="android.hardware.usb.action.USB_ACCESSORY_DETACHED" />
    </intent-filter>
</receiver>

注意:如果DJI SDK内部的动态注册逻辑没法绕过,这个方案可能不生效,而且长期来看还是得升级SDK。

3. 临时降级targetSdkVersion(不推荐)

要是赶上线,可以暂时把targetSdkVersion降回33,但这只是权宜之计,Google后续会强制要求适配更高版本,最终还是得升级SDK解决根本问题。

错误日志

Exception java.lang.SecurityException: com.kuzu.drone: 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:3183)
  at android.os.Parcel.createException (Parcel.java:3167)
  at android.os.Parcel.readException (Parcel.java:3150)
  at android.os.Parcel.readException (Parcel.java:3092)
  at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature (IActivityManager.java:5860)
  at android.app.ContextImpl.registerReceiverInternal (ContextImpl.java:1853)
  at android.app.ContextImpl.registerReceiver (ContextImpl.java:1793)
  at android.app.ContextImpl.registerReceiver (ContextImpl.java:1781)
  at android.content.ContextWrapper.registerReceiver (ContextWrapper.java:757)
  at dji.midware.usb.P3.UsbAccessoryService.registerAoaReceiver
  at dji.midware.dgh.fdd
  at dji.sdksharedlib.fdd.fdd
  at dji.sdk.sdkmanager.DJISDKManager.initParams
  at dji.sdk.sdkmanager.DJISDKManager.initSDKManager
  at dji.sdk.sdkmanager.DJISDKManager.registerApp
  at dji.sdk.sdkmanager.DJISDKManager.access$1400
  at dji.sdk.sdkmanager.DJISDKManager$8.onDownloadSuccess
  at dji.internal.jhg.fdd.fdd
  at dji.sdk.sdkmanager.DJISDKManager.lambda$registerApp$2
  at dji.sdk.sdkmanager.DJISDKManager$$Lambda$4.run
  at dji.sdksharedlib.dgh.dgh$fdd.run
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:644)
  at java.lang.Thread.run (Thread.java:1012)
Caused by android.os.RemoteException: Remote stack trace:
  at com.android.server.am.ActivityManagerService.registerReceiverWithFeature (ActivityManagerService.java:14467)
  at android.app.IActivityManager$Stub.onTransact (IActivityManager.java:2648)
  at com.android.server.am.ActivityManagerService.onTransact (ActivityManagerService.java:2822)
  at android.os.Binder.execTransactInternal (Binder.java:1500)
  at android.os.Binder.execTransact (Binder.java:1444)

内容的提问来源于stack exchange,提问作者makkuzu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 10:05:25