【问题标题】:Android Management API - boot device when power is connctedAndroid Management API - 连接电源时启动设备
【发布时间】:2020-06-28 19:06:35
【问题描述】:

因此,正如标题所述,我正在寻找一种在连接电源充电器时启动 Android 设备的方法。我们正在制造处于信息亭模式的专用设备,并且正在使用 Android Management API 来设置设备上的所有内容。

这涵盖了我们的大部分要求,例如预安装应用程序、禁用其他所有内容、将其连接到托管 Google Play、获取设备报告等......但是对于这个强大的东西,我在文档中找不到任何解决方案。

问题是用户无法使用物理电源按钮(不要问我为什么 :)),并且当电池耗尽时,他们必须能够再次启动它,而无需拧下外壳即可到达物理按钮。

我知道这可以通过不同的方式完成,但我找不到任何适用于 Android Management API 的方法。我正在研究这种“快速启动”方法,因为它看起来很简单 https://source.android.com/devices/bootloader/unlock-trusty#off-mode-charging

最初,我虽然可以使用 devices/issueCommand 端点 https://developers.google.com/android/management/reference/rest/v1/enterprises.devices/issueCommand 以某种方式运行它,但它似乎只支持一些预定义的命令,例如:LOCK、RESET_PASSWORD 和 REBOOT。

也许我只是错过了一些东西。如果有人想到另一种方法,请分享。

如果有任何帮助,我们还将 Android 管理 API 与 PubSub API 挂钩,并在那里提供一个用于提取设备报告的主题。从理论上讲,我可以在那里列出“电源连接”事件,并在设备上运行一些命令。但同样,问题在于如何在设备上远程运行此命令。

也许解决方案是制作另一个应用程序,该应用程序将作为运行此命令的后台进程运行。我想我需要在策略中将其添加为“receiverActivity”。但同样的问题仍然存在……如何从 Android Management API 调用此活动。

底线是这需要完全自动化。在每台设备上手动运行此命令不是一种选择。

另外,值得一提的是,这是一个 Ionic 应用程序。尽管这可能并非不可能,但我们希望将此逻辑保留在应用程序本身之外。理想的解决方案是使用 Android Management API 远程运行一些 adb 命令。

或者也许有一个很好的 3rd 方应用程序可以做到这一点,我可以在策略中安装该应用程序并以某种方式调用它。

欢迎所有建议。也许我错过了一个简单的解决方案。

评论后更新:我不看实际的应用程序如何做到这一点。我正在寻找一种方法来在最初从 Android Management API 策略设置设备时执行一些“本机”命令。所以它应该只执行一次。当它最初设置所有内容时。它应该编辑设备上的某些文件(或运行某些命令)以启用此功能。稍后,它不应该关心设备是否打开,或者它上面运行了哪些应用程序。这里有几种不同的方法可以做到这一点https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected。我正在寻找一种方法来在最初设置设备时触发其中一个命令(仅一次)。换句话说,这应该只在设备注册时执行。它不应该关心设备上运行的任何应用程序。

【问题讨论】:

  • 您不能以编程方式执行此操作,设备未开启以运行您的程序。这将是 OEM 需要在硬件级别构建到设备中的东西。考虑到这一点,您完全处于错误的水平。
  • 这似乎是硬件和固件问题,而不是应用程序问题。
  • 感谢您的回复。但我不是在寻找如何直接从应用程序中执行此操作的方法。我正在寻找一种方法来编辑设备上的某些内部文件(或其他东西),当它由管理 api 首次设置时,它总是会像这样运行。我不太明白为什么 OEM 需要这样做,或者通过固件,因为您可以通过多种方式在任何设备上获得此功能。例如这里有一些建议android.stackexchange.com/questions/20021/…
  • 我只是在寻找一种在管理 api 策略设置其内容时触发其中一个命令的方法。当设备初始设置时,它应该只执行一次。之后,它不应该关心设备是否打开,或者设备上正在运行什么应用程序。

标签: android ionic-framework google-cloud-pubsub android-management-api


【解决方案1】:

所以“免费”的方式是使用 fastboot 命令。但是从 AMA API 来看,这目前是不可能的(而且很可能永远不可能)。这个问题总是特定于硬件的,因为引导加载程序控制着引导过程,并且引导加载程序是为每个设备定制的。

虽然不同的制造商有不同的选择。查看 OEMConfig 应用程序(您可以通过 Play Store for Work 或制造商自己获取)。

三星有自己的 KNOX API,付费的ProKiosk mode 支持控制电源控制。

关于您解决问题的问题中的帖子,您将无法修改系统中的任何文件,因为它仅限于 root。这也永远不会适用于托管设备。


您可以通过设置树莓派或其他设备的脚本来“半自动化”该过程,该脚本等待快速启动设备连接并执行命令。这样,您只需访问每台设备并将其放入 fastboot 并插入设备,然后您就可以进入下一个设备了。


澄清一下:adb 和 fastboot 是两个完全不同的东西。当设备在其引导加载程序中时,Fastboot 正在运行。设备启动 android 时 Adb 正在运行。由于引导加载程序已经退出,因此从技术上讲,在启动 android 时应该无法执行 fastboot 命令。

【讨论】:

  • 感谢您的回答。我只是想知道,如果没有“全自动”的方式来做到这一点,KNOX 是如何做到的?当然,这不是通过将每个设备插入 Raspberry pi,因为当您想使用 KNOX 时,您不会将设备运送给三星。顺便提一句。我们使用的所有设备都是三星平板电脑,所以无论 KNOX 做什么,我们都需要同样的东西。只要是全自动的
  • @ZolaKt 简单地说,因为它是三星制造的:)。但我有根据的猜测是,三星已经在其自己的引导加载程序中向 KNOX 公开了此功能。 KNOX 内置在引导加载程序和安卓固件中,因为三星控制着整个系统,所以他们必须为 KNOX 的安卓部分与 KNOX 的引导加载程序部分实现对话。所以说到底,是因为三星而不是一般的Android/谷歌修改了系统才使之成为可能。
  • @ZolaKt 因为您使用的是三星硬件,所以您可以利用 KNOX。如答案中所述,您可能需要为 ProKiosk 模式付费。我还会为 KNOX play.google.com/work/apps/… 调查这个工作应用程序,您也许可以利用该应用程序并通过 AMA 政策定义一切
  • 是的,这也是猜测。我希望有一种方法可以在不使用 KNOX 的情况下利用暴露的引导加载程序功能。虽然,他们可能对此的公开文档为零,但无论如何我都会给它一个展示。感谢您的回答。我已经给你赏金了
  • 我们不打算利用 KNOX,因为它非常昂贵,而且老实说并不是真正的火箭科学。我们正在制作自己的 EMM。到目前为止,我们已经涵盖了所有内容,除了这个功能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 2020-07-04
  • 1970-01-01
相关资源
最近更新 更多