Android 根Galaxy S8上的设备所有者

Android 根Galaxy S8上的设备所有者,android,device-admin,samsung-knox,Android,Device Admin,Samsung Knox,我一直在尝试将一个内部演示应用提升到我的S8上的设备所有者,但一直存在问题 我尝试过的方法: 1) NFC配置(如上所述) 当使用NFC和Android Bean设置设备所有者时,S8显示“由于设备的安全准则,无法创建工作配置文件”-错误 2) Adb配置(从控制台): 使用时 dpm set-device-owner my/app/namespace/.DeviceAdmin 在windows控制台中,我遇到以下错误 java.lang.SecurityException: Neither

我一直在尝试将一个内部演示应用提升到我的S8上的设备所有者,但一直存在问题

我尝试过的方法:

1) NFC配置(如上所述)

当使用NFC和Android Bean设置设备所有者时,S8显示“由于设备的安全准则,无法创建工作配置文件”-错误

2) Adb配置(从控制台):

使用时

dpm set-device-owner my/app/namespace/.DeviceAdmin
在windows控制台中,我遇到以下错误

java.lang.SecurityException: Neither user 2000 nor current process has com.samsung.android.knox.permission.KNOX_PROXY_ADMIN_INTERNAL.,com.sec.enterprise.permission.MDM_PROXY_ADMIN_INTERNAL
        at android.os.Parcel.readException(Parcel.java:1693)
        at android.os.Parcel.readException(Parcel.java:1646)
        at android.app.admin.IDevicePolicyManager$Stub$Proxy.setActiveAdmin(IDevicePolicyManager.java:5825)
        at com.android.commands.dpm.Dpm.runSetDeviceOwner(Dpm.java:145)
        at com.android.commands.dpm.Dpm.onRun(Dpm.java:96)
        at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
        at com.android.commands.dpm.Dpm.main(Dpm.java:41)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:307)
将缺少的权限添加到我的清单中不会改变任何内容

3) 手动创建xml文件(如上所述)

在这种情况下,我可以在正确的文件夹中创建xml,但当我重新启动手机时,该文件会被删除,并且我的应用程序未注册为设备所有者


我还有什么办法可以尝试吗?或者有人知道问题出在哪里吗

从您尝试过的示例来看,您似乎试图获得设备所有者权限,而不是设备管理员权限:

  • (Android 2.2中引入)提供有限的管理功能,用户可以将其授予任何请求该功能的应用程序
  • (安卓5.0中引入)提供了完整的管理功能,但在设备安装期间只能授予一个应用程序,因此您需要在安装前对设备进行出厂重置
如果您想实现设备管理,您可以遵循

如果您想要实现设备所有者,您可以

  • 使用简单但可能缺少一些高级功能的
  • 或者构建您自己的设备策略控制器应用程序,并使用其中一个(QR码、NFC、托管Google Play帐户等)设置设备,这要复杂得多,但您可以访问所有DevicePolicyManager API

多亏了Freds的评论,我查看了我的清单,并将其与我一直在使用的另一个应用程序进行了比较,从而使Adb资源调配正常工作

我已将以下内容添加到清单中,错误不再发生:

<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

<application       
   ...
   android:testOnly="false">
执行时没有错误


老实说,我不知道是哪一个造成了这种情况,因为我无法在不重置出厂设置的情况下取消设备的配置,但我想我还是会分享它,希望它能为其他人节省一些时间。

谢谢你的回复-你说得对,我一直在尝试将我的应用程序设置为设备所有者。我编辑了原始问题。我将看一看android管理API,因为这似乎足以创建kisok应用程序,但我仍然对错误消息感到困惑。我一直在使用dpm设置设备所有者与相同的应用程序之前,在各种手机上的S7没有问题,但只有在植根的S8我得到的Permission错误。我想避免只为一个设备重新编码整个应用程序只是为了澄清,你是说你问题中的方法#2对S7有效,但对S8无效,步骤完全相同?是的,完全正确-它在各种手机上都可以正常工作,包括(非根)S7。在您需要询问之前:不,S8中尚未注册任何帐户,执行出厂重置不会改变任何内容。更新:我设法使用dpm设置将另一个旧的kiosk应用设置为S8上的设备所有者,因此问题一定出在应用程序或清单本身。至少现在我知道该去哪里找了。我将分析代码,并希望找到问题。
dpm set-device-owner my/app/namespace/.DeviceAdmin