“java.lang.SecurityException:尝试删除非测试管理员”,同时尝试删除设备管理员

问题描述 投票:0回答:1

我无法从我的 Android 12.1 设备中删除设备所有者。

当我在 adb shell 中使用

dpm list-owners
时,我得到以下输出:
1 owner:\n User  0: admin=package.name/app.receivers.DeviceAdminReceiver,DeviceOwner,Affiliated
当我在 adb shell 中使用
dpm remove-active-admin package.name/app.receivers.DeviceAdminReceiver
时,我得到以下输出:

Exception occurred while executing 'remove-active-admin':
java.lang.SecurityException: Attempt to remove non-test admin ComponentInfo{package.name/app.receivers.DeviceAdminReceiver} 0
        at com.android.server.devicepolicy.DevicePolicyManagerService.lambda$forceRemoveActiveAdmin$9$DevicePolicyManagerService(DevicePolicyManagerService.java:3712)
        at com.android.server.devicepolicy.DevicePolicyManagerService$$ExternalSyntheticLambda20.runOrThrow(Unknown Source:6)
        at android.os.Binder.withCleanCallingIdentity(Binder.java:390)
        at com.android.server.devicepolicy.DevicePolicyManagerService$Injector.binderWithCleanCallingIdentity(DevicePolicyManagerService.java:1554)
        at com.android.server.devicepolicy.DevicePolicyManagerService.forceRemoveActiveAdmin(DevicePolicyManagerService.java:3708)
        at com.android.server.devicepolicy.DevicePolicyManagerServiceShellCommand.runRemoveActiveAdmin(DevicePolicyManagerServiceShellCommand.java:280)
        at com.android.server.devicepolicy.DevicePolicyManagerServiceShellCommand.onCommand(DevicePolicyManagerServiceShellCommand.java:93)
        at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
        at android.os.ShellCommand.exec(ShellCommand.java:38)
        at com.android.server.devicepolicy.DevicePolicyManagerService.onShellCommand(DevicePolicyManagerService.java:9818)
        at android.os.Binder.shellCommand(Binder.java:950)
        at android.os.Binder.onTransact(Binder.java:834)
        at android.app.admin.IDevicePolicyManager$Stub.onTransact(IDevicePolicyManager.java:6980)
        at android.os.Binder.execTransactInternal(Binder.java:1184)
        at android.os.Binder.execTransact(Binder.java:1143)

我还尝试从设置中的安全性禁用设备管理应用程序,但禁用文本也显示为灰色。 我该怎么办?

java android adb device-policy-manager device-owner
1个回答
0
投票

将此行添加到 Android 清单应用程序标记中:

android:testOnly =“true”

像这样:

 <application
        android:name=".presentation.DpcApplication"
        android:icon="@mipmap/ic_launcher"
        android:testOnly="${testOnly}"/>

在 build.gradle 中:

 buildTypes {
        debug {
            isDebuggable = true
            defaultConfig {
                manifestPlaceholders["testOnly"] = "true"
            }
        }
        release {
            isDebuggable = false
            defaultConfig {
                manifestPlaceholders["testOnly"] = "false"
            }
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
            signingConfig = signingConfigs.getByName("debug")
        }
    }

不要在生产中使用 android:testOnly="true"

© www.soinside.com 2019 - 2024. All rights reserved.