【问题标题】:How to use Android-L preview Task Locking?如何使用Android-L预览任务锁定?
【发布时间】:2014-12-09 02:55:22
【问题描述】:

有没有人在 Android L 中使用任务锁定?他们能分享一些关于它是如何工作的细节吗?我看过下面的说明,但很难理解。

目前我已经制作了一个我想在信息亭模式下运行的应用程序。我曾考虑将其作为启动器应用程序或使用 Surelock,但新的任务锁定看起来将是未来的最佳选择。

我需要创建 Android L 的 userdebug 版本吗?我之前没有从源代码构建 Android,我开始考虑构建,但我不认为 Android-L 的源代码可用?

To set up a device owner, follow these steps:

Attach a device running an Android userdebug build to your development machine.
Install your device owner app.
Create a device_owner.xml file and save it to the /data/system directory on the device.

$ adb root
$ adb shell stop
$ rm /tmp/device_owner.xml
$ echo "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>">> /tmp/device_owner.xml
$ echo "<device-owner package=\"<your_device_owner_package>\"name=\"*<your_organization_name>\" />" >> /tmp/device_owner.xml
$ adb push /tmp/device_owner.xml /data/system/device_owner.xml
$ adb reboot

https://developer.android.com/preview/api-overview.html

编辑:更多信息

我尝试让运行 Android-L 预览版的设备 (Nexus 7) 生根。然后我将带有我的包名的 device_owner.xml 放在 data/system/ 中。但是还是不行,islockTaskPermited()返回false,调用startLockTask()什么也没做。

【问题讨论】:

  • 如果您在 Android Stackexchange 上提出这个问题,您可能会得到更好的答案..
  • 你遇到了什么问题?
  • 我在 Android Stackexchange 上提出了一个相关问题,关于我们如何在生产 Android-L 设备上启用此功能:android.stackexchange.com/questions/85013/…

标签: android android-5.0-lollipop kiosk kiosk-mode


【解决方案1】:

Task Locking API截取下面的片段

很明显,如果 device_owner.xml 存在,startLockTask() api 将是 hv 效果。

如何检查我的应用是否为设备所有者?

当您的应用程序是设备所有者时,您的应用程序是设备管理员选项将被选中并且复选框将显示为灰色,因此不允许您取消选中复选框。

推送 device_owner.xml 时需要授予系统权限

按照以下步骤:

  1. 创建 device_owner.xml [确保应用程序出现在你之前 推送 device_owner.xml ]​​i>
  2. 导航到存在 device_owner 的终端路径
  3. adb push device_owner.xml /sdcard/
  4. adb 外壳
  5. cp /sdcard/device_owner.xml /data/system/
  6. cd /data/system/
  7. chown system:system device_owner.xml
  8. 重启

【讨论】:

  • 谢谢! 8. chown system:system 似乎有所作为,现在工作:)
  • 在低于 21 的版本中有办法做到这一点吗?
  • @Menna-AllahSami 无任务锁定(现在称为屏幕固定)需要 Lollipop。有很多方法可以尝试做类似的事情,但没有一个能像 imo 一样奏效。
【解决方案2】:

使用以下内容创建文件 device_owner.xml,替换适当的包名称

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<device-owner package="com.your.packagename" name="Yourname" />

adb push device_owner.xml /data/system/device_owner.xml 重启设备。

来自com.your.packagename应用调用

startLockTask(); 

来自您的活动

即使你没有userdebug,也可以通过调用startLockTask进行测试,无需推送任何文件

【讨论】:

  • 在不推送文件的情况下调用“startLockTask”似乎没有任何效果。
  • @tagy22 不推送 device_owner.xml 你将无法进入信息亭模式
  • @nandeesh 不推送 device_owner.xml 你如何在 Android L 中使用 startLockTask() ???
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
  • 2014-08-26
相关资源
最近更新 更多