未知的管理员:ComponentInfo。设备所有者无法使用命令dpm set-device-owner进行设置

时间:2018-05-21 11:57:39

标签: android

我已经完成了设置设备管理员所需的工作。但是当我运行“dpm set-device-owner”时总是会得到未知的管理员:组件信息。我想执行下面的代码。每当我在代码

下面运行时我都会遇到安全异常
   DevicePolicyManager deviceManager = ((DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE));
   deviceManager.installCaCert(localComponent, ret);

1 个答案:

答案 0 :(得分:0)

从您的问题中,我看到您指的是两种不同的东西:设备管理员和设备所有者。

  1. “我已经完成了设置设备管理员所需的一切”

这是什么意思?您从代码中询问,是否如本例所示那样做意图并等待响应? Is it a proper way to get the response from Device Admin by onActivityResult

您是否尝试过adb中的命令:dpm set-active-admin com.your.package / .your.device.admin.receiver吗?

  1. ”,但是当我运行“ dpm set-device-owner”时,总是得到未知的管理员:组件信息”

这是具有更高权限的设备管理员的顶部。您无需成为设备所有者即可安装证书,可以通过以下方法要求用户批准证书:Programmatically add a certificate authority while keeping Android system SSL certificates或使用供应商(如Samsung Knox或LG)的api来完成。

通过执行dpm set-active-owner com.your.package / .your.device.admin.receiver,您可以始终(如果设备允许,仅用于测试)将您的应用启用为设备所有者

https://developers.google.com/android/work/prov-devices-有关如何在没有ADB(最终用户设备)的情况下向具有设备所有者的设备进行配置的文档

class ActivityB extends AppCompatActivity {
    public static final int resultSuccess = 0x11
    public static final int resultFailure = 0x33
    public static final String resultKey = "keyForResult"         

    private void onListItemClick(final String soundString) {
        // optional you can also do this
        SharedPrefUtils.saveString(ActivityA.keyPref, soundString);

        // better to do this
        final Intent returnIntent = getIntent() != null ? getIntent() : new Intent();

        returnIntent.putExtra(resultKey, soundString);
        if (getCallingActivity() != null) {
            setResult(returnIntent, resultSuccess);
        }
        onBackPressed();
    }
}