如何在Android 5.0生产设备中启用任务锁定


12

这个StackOverflow问题探讨了如何在Android L开发者预览版中启用设备所有者应用程序,以及信息亭模式。由于该方法需要Android的用户调试版本,将设备植根并将XML文件复制到根文件系统中,因此它似乎不适合在公司内部大规模部署单个功能的Android设备。

设备拥有者应用如何在生产的Android L设备上安装?


您是否喜欢这个问题?
KOTIOS 2014年


感谢@Spynet-这似乎是该解决方案的最完整摘要。
Adrian Cox

1
看看这里与SRC很好的指导:objectpartners.com/2014/11/04/...
海登思林

Answers:


14

编辑:经过更多测试后更新)

检查最新文档

此功能似乎现在称为“屏幕固定”,并且该应用程序不必是设备所有者。如果未设置设备所有者,则会提示用户接受。但是下面提到的供自助服务终端使用的方式存在一些问题。

有两种方法可以激活屏幕固定:

手动:用户可以在“设置”>“安全性”>“屏幕固定”中启用屏幕固定,并通过触摸“最近”屏幕中的绿色“固定”图标来选择要固定的任务。编程方式:要以编程方式激活屏幕固定,请从您的应用中调用startLockTask()。如果发出请求的应用不是设备所有者,则会提示用户进行确认。设备所有者的应用程序可以调用setLockTaskPackages()方法以使应用程序可固定,而无需用户确认步骤。

如果您以编程方式(非设备所有者的应用程序)或使用最近使用的设备在设备上激活屏幕固定,则会出现以下现象:

出现一个对话框,询问用户是否要启用屏幕固定以及是否需要密码才能退出。如果他们按是,则状态栏和通知消失,返回,主页和“最近”按钮不会消失。轻按家中或最近来的东西,会出现烤面包,通知用户如何退出屏幕固定。

然后,用户可以按住并保持最新状态以退出屏幕固定。如果用户选择要求输入密码,他们将被直接踢向锁定屏幕。此行为意味着它不适用于信息亭imo。由于信息亭用户最终很容易看到锁定屏幕。

为了获得正确的信息亭模式,我们需要设置设备所有者。Google的文档说您需要使用NFC做到这一点:

要部署和激活设备所有者,必须在设备处于未配置状态时执行从编程应用到设备的NFC数据传输。

使用NFC进行此操作似乎有些复杂(如果设备没有NFC,该怎么办?)。我尚未对此进行调查,因此,如果有人可以提供信息,您如何通过NFC设置设备所有者?现在,这成为您问题的重点。(即在非root用户的设备上设置设备所有者)

但是,要确认行为是否符合预期,如果您对设备进行了root操作,则可以按照我在这里提到的Google先前的说明(添加device_owner.xml)来设置设备所有者。

现在,您可以正确锁定该应用程序,没有对话框可供用户接受,启用此功能后,“最近记录”和“主页”按钮将消失,并且除非您的应用程序自行解锁,否则用户无法离开该应用程序。正确的信息亭模式。我已经在Nexus 7 2013上使用最新的Lollipop版本进行了测试。

以下代码段打开了锁:

mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdminSample = new ComponentName(this, DeviceAdminSample.class);

if (mDPM.isDeviceOwnerApp(this.getPackageName())) {
    Log.d(TAG, "isDeviceOwnerApp: YES");
    String[] packages = {this.getPackageName()};
    mDPM.setLockTaskPackages(mDeviceAdminSample, packages);
} else {
    Log.d(TAG, "isDeviceOwnerApp: NO");
}

if (mDPM.isLockTaskPermitted(this.getPackageName())) {
    Log.d(TAG, "isLockTaskPermitted: ALLOWED");
    startLockTask();
} else {
    Log.d(TAG, "isLockTaskPermitted: NOT ALLOWED");
}

我认为这是目前可能的最佳答案。NFC的步骤仍然是个谜,但是这是一个狭窄得多的问题。
阿德里安·考克斯

我一直在尝试使NFC步骤工作,但没有成功,因此我在这里提出了一个问题。此外,Google提出了一项功能请求,以改善此处
tagy22,2014年

1

我无法评论一个有点麻烦的答案,但可以dpm作为设置设备所有者的tagy22答案的补充。更多细节在这里


1
dpm如果在设备中设置了帐户(例如Google帐户),则无法完成工作。
Firelord

NFC在那种情况下会吗?给我的印象是,在增加帐户期限之前需要设置设备所有者。
Troy Patrick
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.