Android Management API 的委托范围似乎没有被 Companion 应用程序获取

Posted

技术标签:

【中文标题】Android Management API 的委托范围似乎没有被 Companion 应用程序获取【英文标题】:Android Management API's Delegation Scopes do not seem to be acquired by Companion app 【发布时间】:2019-09-21 03:00:11 【问题描述】:

根据android Management API reference,我们已将我们的 Android Companion 应用配置为能够:启用系统应用、隐藏和取消隐藏包。

我们在策略配置中添加了以下信息:


  '
  '
  '
  "applications": [
    
      "packageName": "com.domain.app",
      "installType": "REQUIRED_FOR_SETUP",
      "defaultPermissionPolicy": "GRANT",
      "delegatedScopes": [
        "ENABLE_SYSTEM_APP",
        "PACKAGE_ACCESS"
      ]
    
  ],
  '
  '
  '

然后,在我们的 Android Companion 应用中,我们根据 Google 文档 here 和 here 添加了以下代码行:

DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName admin = new ComponentName(mContext, DeviceAdminReceiver.class);

// Iterate through system application package names list
for (String packageName : systemAppsList) 
  if (packageName != null && !packageName.equals("")) 
    try 
      // Re-enable a system app that was disabled by default when the user was initialized
      dpm.enableSystemApp(admin, packageName);

      // Unhide a package (it could be any app : system, managed, etc...)
      dpm.setApplicationHidden(admin, packageName, false);
     catch (SecurityException e) 
      e.printStackTrace();
      Log.e(TAG, e.getMessage());
    
  

我们希望 Android 启动器显示已启用的系统应用,但 Android 捕获到 SecurityException 并打印以下错误日志:

没有活动管理员 ComponentInfocom.domain.app/android.app.admin.DeviceAdminReceiver

您对可能出现的问题有任何想法吗?

【问题讨论】:

嘿,我知道这是一个老问题,但我想知道在使用 Android 管理 API 时如何将您的应用设置为管理员。我们试图检查我们的信息亭应用程序是否是设备所有者(顺便说一句,我们可能混合了概念),但我们的应用程序不是。非常感谢! 【参考方案1】:

在您的方法调用中,如果您使用Android Documentation 中所述的委托作用域,请将 admin 参数设置为 null

ComponentName:此请求与哪个 DeviceAdminReceiver 关联,如果调用者是包访问委托,则为 null。此值绝不能为空。

有点混乱,如果使用委托作用域,admin 参数可以设置为 null 并且在同一时间之后...这个值绝不能为 null ,(Great Google)

【讨论】:

lol Google 只是修复了文档错误“...此值可能为空。” 谢谢@issamux!我在两个方法调用中都将 ComponentName 参数设置为 null,现在它可以工作了。是的,在这一点上,Google 文档对我来说似乎也有点混乱和矛盾。 嗨@issamux,我想知道你是否可以看看我刚刚添加到问题中的评论。如果您愿意,我可能会提出一个新问题并链接它 嗨@pitazzo ...是的,请提出一个新问题并提供上下文和一些代码,以便我们为您提供帮助:) 您好@issamux,我们刚刚发布了这个问题,希望它提供了足够的上下文。请随时发表评论以获取任何进一步的说明。 ***.com/questions/64634738/…

以上是关于Android Management API 的委托范围似乎没有被 Companion 应用程序获取的主要内容,如果未能解决你的问题,请参考以下文章

适用于设备的 Android Management API 更改策略

在 Android Management API Policy 中启用设备的相机应用

Android Management Api 失去对已注册设备的控制权

如何通过 Android Management API 在 KIOSK 模式下允许 systemui 活动?

Android Management API 的委托范围似乎没有被 Companion 应用程序获取

后台服务未在 Android Management API 中的完全托管设备上运行