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

Android 10中出现‘No active admin’ SecurityException的解决办法

Google Play Console预启动报告Android 10设备管理权限异常问题

仅在Android 10(SDK 29)版本的预启动测试中出现以下错误:

java.lang.SecurityException: No active admin ComponentInfo{com.google.android.apps.mtaas.deviceadmin/com.google.android.apps.mtaas.deviceadmin.DeviceAdminReceiver}

完整错误堆栈信息:

Exception Process: com.google.android.apps.mtaas.deviceadmin, PID: 4380
java.lang.SecurityException: No active admin ComponentInfo{com.google.android.apps.mtaas.deviceadmin/com.google.android.apps.mtaas.deviceadmin.DeviceAdminReceiver}
  at android.os.Parcel.createException (Parcel.java:2088)
  at android.os.Parcel.readException (Parcel.java:2056)
  at android.os.Parcel.readException (Parcel.java:2004)
  at android.app.admin.IDevicePolicyManager$Stub$Proxy.setNetworkLoggingEnabled (IDevicePolicyManager.java:15305)
  at android.app.admin.DevicePolicyManager.setNetworkLoggingEnabled (DevicePolicyManager.java:11627)
  at com.google.android.apps.mtaas.deviceadmin.EnableNetworkLogging.onStart (EnableNetworkLogging.kt:27)
  at android.app.Instrumentation$InstrumentationThread.run (Instrumentation.java:2209)
Caused by android.os.RemoteException: Remote stack trace:
  at com.android.server.devicepolicy.DevicePolicyManagerService.getActiveAdminWithPolicyForUidLocked (DevicePolicyManagerService.java:3259)
  at com.android.server.devicepolicy.DevicePolicyManagerService.getActiveAdminOrCheckPermissionForCallerLocked (DevicePolicyManagerService.java:3155)
  at com.android.server.devicepolicy.DevicePolicyManagerService.getActiveAdminForCallerLocked (DevicePolicyManagerService.java:3136)
  at com.android.server.devicepolicy.DevicePolicyManagerService.enforceCanManageScopeOrCheckPermission (DevicePolicyManagerService.java:7218)
  at com.android.server.devicepolicy.DevicePolicyManagerService.enforceCanManageScope (DevicePolicyManagerService.java:7204)

解决方案

  • 检查设备管理员组件注册:确保DeviceAdminReceiver在AndroidManifest.xml中正确配置,包含绑定权限、元数据和意图过滤器:
<receiver
    android:name="com.google.android.apps.mtaas.deviceadmin.DeviceAdminReceiver"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <meta-data
        android:name="android.app.device_admin"
        android:resource="@xml/device_admin_config" />
    <intent-filter>
        <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
    </intent-filter>
</receiver>

对应的res/xml/device_admin_config.xml需声明所需设备管理策略,比如网络日志权限:

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-policies>
        <network-logging />
    </uses-policies>
</device-admin>
  • 验证管理员激活状态:调用setNetworkLoggingEnabled前,通过DevicePolicyManager检查组件是否已激活:
val componentName = ComponentName(context, DeviceAdminReceiver::class.java)
val dpm = context.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
if (!dpm.isAdminActive(componentName)) {
    // 引导用户激活设备管理员
    val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN).apply {
        putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName)
        putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "需要激活设备管理员以启用网络日志功能")
    }
    startActivity(intent)
    return
}
// 执行网络日志启用操作
dpm.setNetworkLoggingEnabled(componentName, true)
  • Android 10权限适配:Android 10收紧了设备管理权限,确保应用请求管理员权限的流程符合系统规范,避免在未激活状态下调用受限API。

  • 预启动测试适配:在Google Play Console预启动测试流程中,确保测试场景包含设备管理员激活步骤,或调整测试逻辑,跳过未激活状态下的相关操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 04:29:57