甲设备所有者可以授予运行时权限使用给第三方应用DevicePolicyManager.setPermissionGrantState() ,以避免用户提示。
但是,设备所有者也可以通过任何方式授予USB权限,以使该应用无需用户提示即可访问插入的USB设备吗?
我也尝试调用UsbManager.grantPermission()(反射),但是它引发了一个,SecurityException因为它需要MANAGE_USB仅授予系统应用程序(显然不授予设备所有者)的权限。
注意:我正在寻找在非root用户和非自定义Android系统上运行的解决方案,设备所有者应用是使用Android Enterprise设置方法设置的。
android android-usb android-enterprise android-management-api
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
应用程序报告和电源管理报告需要花费大量时间来刷新。我注意到我的设备电池电量为88%,但在电源管理报告中,电池电量仍为40%。
另外,当我在设备上更新应用程序时,应用程序报告花费了大量时间来获取更新的版本代码。
有什么办法可以从设备获取最新报告?
我正在尝试开发 Android Management API + kiosk 应用程序。
我想enterprises/xxxxx/devices/xxxxx从自助服务终端应用程序中获取设备 id( )。
我的目的是将设备 ID 与在 app 中创建的自助服务终端应用 ID 相关联。
我可以从自助服务终端应用程序获取设备 ID 吗?还有其他解决方案吗?
我是android企业开发领域的新手,对于android企业生态系统中的各个部分之间如何相互联系,我有些误解。让我解释。
我正在尝试实现的解决方案是能够远程将设备锁定为信息亭模式,并且即使用户处于脱机状态,也可以基于某些业务逻辑将其锁定。我开始研究EMM,尤其是Android Management API以解决该问题。我可以使用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
仅出于内部目的/仅在我们的企业内部,我想要一台 Android 平板电脑,它只运行一个应用程序(用 Ionic/Angular 制作),甚至在重新启动平板电脑后也会出现该应用程序,并且用户无法离开它。
我认为我想要实现的技术描述称为专用设备(以前称为企业拥有的一次性设备,或 COSU)。
我想通过Android Management API来实现这一点,这看起来是 MDM(移动设备管理)解决方案的绝佳选择。
Google在此展示了如何通过 Android 管理 API 策略来实现这一目标。
我无法摆脱状态栏和导航栏。
出于测试目的,我尝试使用常规 YouTube 应用来实现此目的。我"statusBarDisabled": true,能够禁用状态栏,因此用户无法与其交互,但它仍然可见。
导航栏也是如此
"persistentPreferredActivities":[
{
"receiverActivity":"com.google.android.youtube",
"actions":[
"android.intent.action.MAIN"
],
"categories":[
"android.intent.category.HOME",
"android.intent.category.DEFAULT"
]
}
]
Run Code Online (Sandbox Code Playgroud)
我能够隐藏主页和最近使用的按钮,但后退按钮仍然存在,并且整个导航栏可见。
下图直观地展示了该问题:
有人知道如何完全摆脱状态栏和导航栏吗?
这就是我的整个政策的样子:
import json
policy_name = enterprise_name + '/policies/policy1'
policy_json = '''
{
"safeBootDisabled": true,
"statusBarDisabled": true,
"keyguardDisabled": true,
"screenCaptureDisabled": true,
"factoryResetDisabled": true,
"cameraDisabled": true,
"blockApplicationsEnabled": true,
"systemUpdate": {
"type": "WINDOWED",
"startMinutes": 120,
"endMinutes": 240
}, …Run Code Online (Sandbox Code Playgroud) fullscreen statusbar navigationbar kiosk-mode android-management-api
对于客户,我创建了一个简单的应用程序,供客户员工和客户客户使用。所有手机均为运行 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
我们有一个 G Suite 帐户,我想使用Android Management API管理我们公司拥有的一些平板电脑作为信息亭显示。但是,它似乎需要一个任意的“个人”Gmail 帐户,而不是允许 G Suite 用户使用它。
要配置 a device,您需要创建一个policy. 需要将策略分配给enterprise.
你可以从这里获取你的 G Suite 组织 ID ,这个 ID显然也是你的企业 ID。该API需要它的格式enterprises/id,如enterprises/abcdefg
不幸的是,即使在与超级管理员进行身份验证后,对 API 的任何调用都会遇到
{
"error": {
"code": 403,
"message": "Caller is not authorized to manage enterprise.",
"status": "PERMISSION_DENIED"
}
}
Run Code Online (Sandbox Code Playgroud)
提供了快速入门指南,可让您轻松创建企业、创建策略,然后调配设备。当我们使用个人 Gmail 帐户时一切正常,我可以成功地将平板电脑配置为自助服务终端模式。一旦我尝试使用 G Suite 帐户,就会遇到:
"G Suite is not currently supported by managed Google Play Accounts, …
android android-for-work android-management-api google-workspace
我正在使用目前未经过 Play 认证的信息亭式设备,因此既没有播放服务也没有 Play 商店。是否可以使用 Android Management API(以及库存设备策略控制器)进行注册?
先感谢您
我在我的企业中创建了 2 个策略。
我想将一台设备切换到另一项策略,而无需重新注册。
我尝试使用带有以下 JSON 的 android 管理企业 devices.patch
{ "policyName": "policy2" }
Run Code Online (Sandbox Code Playgroud)
当我执行此命令时,我总是收到以下错误消息:
{
"error": {
"code": 400,
"message": "Illegal state transition from ACTIVE to DEVICE_STATE_UNSPECIFIED",
"status": "INVALID_ARGUMENT"
}
}
Run Code Online (Sandbox Code Playgroud)
有人知道如何在不擦除设备的情况下更改设备策略吗?
android ×8
google-play ×3
kiosk-mode ×2
android-usb ×1
cosu ×1
fullscreen ×1
policy ×1
statusbar ×1