标签: android-enterprise

授予USB权限作为设备所有者

设备所有者可以授予运行时权限使用给第三方应用DevicePolicyManager.setPermissionGrantState() ,以避免用户提示。

但是,设备所有者也可以通过任何方式授予USB权限,以使该应用无需用户提示即可访问插入的USB设备吗?

我也尝试调用UsbManager.grantPermission()(反射),但是它引发了一个,SecurityException因为它需要MANAGE_USB仅授予系统应用程序(显然不授予设备所有者)的权限。

注意:我正在寻找在非root用户和非自定义Android系统上运行的解决方案,设备所有者应用是使用Android Enterprise设置方法设置的

android android-usb android-enterprise android-management-api

9
推荐指数
1
解决办法
486
查看次数

How to distribute private Android app testing tracks using the Android Management API + Organisations?

So I'm using the Android Management API to manage and handle deployment for an app to a kiosk device I am working on.

I've created an organisation, created a policy, and ensured the app is limited to managed google play only, and assigned the organisation to the app.

I've enrolled some devices onto the policy, and when the app is moved to prod (currently this is fine as there are only a handful of test devices on that policy), it …

android google-play android-testing android-enterprise android-management-api

8
推荐指数
1
解决办法
271
查看次数

设计自定义android DPC应用程序与Android管理API有何关系?

我是android企业开发领域的新手,对于android企业生态系统中的各个部分之间如何相互联系,我有些误解。让我解释。

我正在尝试实现的解决方案是能够远程将设备锁定为信息亭模式,并且即使用户处于脱机状态,也可以基于某些业务逻辑将其锁定。我开始研究EMM,尤其是Android Management API以解决该问题。我可以使用API​​将设备远程锁定为信息亭模式。我正在采取的步骤

  1. 恢复出厂设置的Android设备
  2. 到达用户需要输入凭据的屏幕
  3. 我输入afw#setup而不是真实的凭证
  4. 设备进入工作资料模式,并且正在安装android设备策略
  5. 我在管理API中创建了一个注册令牌(快速入门指南中介绍了步骤)
  6. 收到提示后,我会生成QR码并使用恢复出厂设置的设备对其进行扫描
  7. 该设备将被连接到企业,而且我成功能控制它,并通过创建特殊亭模式策略和修补设备以符合使用的组合政策将器件置于展台模式补丁策略(创建策略)和补丁设备 API。

下一步是找到一种即使用户处于离线状态也可以将设备锁定为信息亭模式的方法。我假设这将通过创建android企业自定义DPC(设备策略控制器)应用程序来实现。我假设通过阅读以下文档,配置“单一用途”设备的三种方式之一是创建自定义DPC应用程序。这是来自不同网址的另一个引号

作为EMM,您将开发一个DPC应用程序,供客户与EMM控制台和服务器一起使用。您的客户将DPC部署到他们管理的用户设备上。DPC充当EMM控制台(和服务器)与设备之间的桥梁。管理员使用EMM控制台执行一系列任务,包括配置设备设置和应用程序。

这就是我所有困惑的地方。自然而然产生的第一个问题- 在谈论EMM控制台和服务器时,前面引用的作者是否提到了EMM管理API?

此外,还有更多问题我找不到答案

在创建自定义DPC 的指南中,没有提到EMM API在自定义DPC中将扮演什么角色,因此,我找不到任何地方描述自定义DPC是EMM控制台(大概是EMM API)之间的桥梁。和设备?

然后,假设我已经开发了一个自定义DPC应用程序,并将其上传到了Google Play Alpha频道。文档指出,在设置过程中,我应该输入afw#DPC_NAME而不是输入afw#setup,而且我不知道如何生成该名称?它是DPC应用程序的捆绑包ID吗?还是可能是在Google设置中的某处设置了?例如,谷歌已经开发了TestDPC应用程序来测试企业解决方案,我能够按照上述步骤操作,输入afw#testdpc并成功扫描了git自述文件中的QR码,我看到已安装了TestDPC并设备已启动进入工作资料模式。因此,我假设我需要以某种方式注册我自己的“ testdpc”并输入afw#my_dpc。

基本上,我有独立工作的不同作品,我想在我的脑海中形成一个广阔的画面,以了解如何将这些作品缝合在一起。

谢谢你的回答

更新1:

今天,我找到了一种无需通过NFC或其他设置流程即可将自定义DPC转变为设备所有者的方法。这对于开发目的特别有用。请按照此链接获取说明。这既节省了时间,而且就我而言,我们仍在等待Google的批准,但最终我们可以开始测试某些内容,而无需自定义设置流程。

android kiosk-mode cosu android-enterprise android-management-api

6
推荐指数
1
解决办法
1527
查看次数

Android Enterprise - BluetoothAdapter.startDiscovery() 不开始扫描

我正在使用BluetoothAdapter.startDiscovery()查找特定的蓝牙设备(它是蓝牙 2.0 设备,所以我必须使用BluetoothAdapter.startDiscovery())。我拥有所有必需的权限(蓝牙、位置),并且该应用程序运行良好。

但现在我必须在 Android Enterprise (Work Profile) 下使用这个应用程序。在工作配置文件下,它不会开始扫描。配置文件中的所有限制都被禁用。
经过调查 logcat 我发现了这样几行:

非工作资料日志:

2019-07-29 10:23:13.109 10230-10446/? D/BluetoothAdapterService: startDiscovery() uid = 10126, pid = 6328
2019-07-29 10:23:13.110 10230-10446/? D/BluetoothAdapterService: startDiscovery
Run Code Online (Sandbox Code Playgroud)

工作档案日志:

2019-07-29 10:21:26.536 10230-13473/? D/BluetoothAdapterService: startDiscovery() uid = 1010126, pid = 13390
2019-07-29 10:21:26.536 10230-13473/? W/BluetoothAdapterService: startDiscovery() - Not allowed for non-active user
Run Code Online (Sandbox Code Playgroud)

这是OnePlus 6的日志,但我在三星S10上也观察到了类似的logcat。客户也表示他们在 S9、S8 和某些诺基亚设备(实际上是他们测试过的所有设备)上遇到了同样的问题。

通过 Android 源搜索,我发现以下代码,生成此日志:

    public boolean startDiscovery() {
        if (!Utils.checkCaller()) {
            Log.w(TAG, "startDiscovery() - Not allowed for non-active user"); …
Run Code Online (Sandbox Code Playgroud)

android bluetooth android-enterprise android-work-profile

6
推荐指数
0
解决办法
369
查看次数

更新处于 KIOSK 模式的托管 Google Play 应用

对于客户,我创建了一个简单的应用程序,供客户员工和客户客户使用。所有手机均为运行 Android 9 的三星 A70 手机。

该应用程序已设置为在 KIOSK 模式下运行,因此只能运行该应用程序(专用设备)。它是一个托管应用程序,因此只有客户拥有的设备才能通过客户企业安装该应用程序。该应用程序是使用策略通过 Google Management API 安装的。

我只是使用https://developers.google.com/android/management/quickstart创建策略并使用二维码从头开始安装手机。

到目前为止一切都很好。问题是我无法让手机更新到更新版本的自助服务终端应用程序。

我知道当应用程序处于 Kiosk 模式时,它们不能简单地更新,您必须设置允许应用程序退出 KIOSK 模式并自行更新的时间间隔。但是即使我在策略中设置了时间间隔,它也不会更新。甚至试图让时间间隔是一整天。

我还尝试使用 minimumVersionCode 策略强制更新,但仍然忽略更新。

我已经检查过托管应用程序是否已上传并获得批准(自上一个版本上传以来实际上已经有一个多月了),所以我很确定它与缓存没有任何关系。它说该应用程序是版本 11。

Production

Release:
0.0.11
Full roll-out.
1 app bundle, version code:
11
Run Code Online (Sandbox Code Playgroud)

手机使用的政策如下。(根据我的客户要求,我已经删除了完整的包 url)

import json

#policy_name = enterprise_name + '/policies/internalUsers'

policy_name = enterprise_name + '/policies/developer'



policy_json = '''
{
  "applications": [
    {
      "packageName": "[package_url].itemrepair",
      "installType": "KIOSK",
      "defaultPermissionPolicy": "GRANT",
      "minimumVersionCode": 11
    }
  ],
  "safeBootDisabled": true,
  "factoryResetDisabled": false,
  "debuggingFeaturesAllowed": true,
  "appAutoUpdatePolicy": "ALWAYS",
  "systemUpdate":
    {
      "type": …
Run Code Online (Sandbox Code Playgroud)

android google-play android-enterprise android-management-api

6
推荐指数
1
解决办法
520
查看次数

是否可以在不注册EMM社区的情况下构建DPC?

由于申请EMM集成的过程花费了不合理的大量时间,并且整个过程被那些通过它的幸运者描述为"令人难以置信的痛苦",我想知道是否绝对需要成为EMM以便按顺序有一个有效的设备策略控制器应用程序(DPC).

如果您遇到此问题,请分享经验.

我正在为COSU设备开发并希望进入自助服务终端模式.我知道存在如何做到这一点的方法,但它们都实现了一堆变通方法 - 这不是一个选项 - 我想要一个可控,安全和健壮的方法来做到这一点.我也不在乎没有远程管理的能力.

android android-for-work cosu android-enterprise

5
推荐指数
1
解决办法
977
查看次数

托管配置文件中的 Android 请勿打扰 (DnD) 权限

我有以下问题:

我的应用程序分布在 MDM 系统上,并在 Android for Work 中运行。在某些情况下,应用程序必须暂时终止 DnD 模式。为此,用户必须在应用程序启动时授予 DnD 权限。

到目前为止,一切都很好。如果我将应用程序安装在非托管区域中,该应用程序会显示在列表中,并且可以毫无问题地授予权限。一旦应用程序通过 MDM 系统分发,该应用程序就不再出现在列表中,并且无法授予权限。所有授权均已在 MDM 系统中授予。作为一个例子,我已经通过 MDM 系统分发了 Google 应用程序。该应用程序出现在列表中。

截图图像

在清单中我设置了以下权限:

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
Run Code Online (Sandbox Code Playgroud)

当应用程序启动时,将执行以下代码:

NotificationManager nm = (NotificationManager).getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M && !nm.isNotificationPolicyAccessGranted()) {
  Intent intent = new
  Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
  startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

仅当具有 DnD 权限时才会出现此问题。所有其他权限(例如叠加权限)都可以正常显示。

我希望任何人都可以帮助我。

android mdm android-permissions android-for-work android-enterprise

5
推荐指数
1
解决办法
8233
查看次数

如何防止用户关闭GPS,Wifi和蓝牙?

我正在开发一个跟踪应用程序,并且需要防止用户关闭用于确定位置的基本传感器。我无法修改设备ROM或具有root用户访问权限(或者至少希望没有该用户访问权限),但是我想到了使用设备管理API通过概要文件所有者或设备所有者模式执行这些功能。我基本上是在寻找一种方法来阻止Android设置中的这些功能。

我不确定这是否可行以及如何实现,我没有在GitHub中找到实现此功能的应用程序示例。谁能给我一个简单的例子或特定的文档?

我试图遵循这三个文档,但没有成功找到针对此特定功能的解决方案:

https://source.android.com/devices/tech/admin https://developer.android.com/guide/topics/admin/device-admin https://developers.google.com/android/management/introduction

这是我一直在尝试的摘录:

setUserRestriction(UserManager.DISALLOW_CONFIG_WIFI, true);
setUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, active);
setUserRestriction(UserManager.DISALLOW_CONFIG_BLUETOOTH, active);

private void setUserRestriction(String restriction, boolean disallow){
    if (disallow) {
        mDevicePolicyManager.addUserRestriction(mAdminComponentName, restriction);
    } else {
        mDevicePolicyManager.clearUserRestriction(mAdminComponentName,
restriction);
    }
}
Run Code Online (Sandbox Code Playgroud)

DISALLOW_CONFIG_BLUETOOTH已在API级别18公共静态最终字符串DISALLOW_CONFIG_BLUETOOTH中添加

指定是否禁止用户配置蓝牙。这并不限制用户打开或关闭蓝牙。默认值为false。

此限制不会阻止用户使用蓝牙。要完全禁止在设备上使用蓝牙,请使用DISALLOW_BLUETOOTH。

此限制对托管配置文件无效。

用户限制的关键。

类型:布尔

android android-sensors device-admin device-owner android-enterprise

5
推荐指数
1
解决办法
269
查看次数