屏幕以编程方式固定第三方应用

kas*_*ash 14 android device-policy-manager android-5.0-lollipop android-screen-pinning device-owner

在实现设备所有权之后,我试图实现一种方法来指示设备将任何给定的应用程序锁定到信息亭模式(或屏幕固定模式).由于我拥有设备所有权,因此不会要求用户获得许可.

在开发者网站上,简要说明告诉我可以做我正在尝试的事情:

http://developer.android.com/about/versions/android-5.0.html#ScreenPinning

以编程方式:要以编程方式激活屏幕固定,请从您的应用程序调用startLockTask().如果请求的应用程序不是设备所有者,则会提示用户进行确认.设备所有者应用程序可以调用setLockTaskPackages()方法,以便在没有用户确认步骤的情况下使应用程序可以固定.

这表明作为设备所有者应用程序,我可以在没有用户确认的情况下锁定其他应用程序...但我不知道如何操作.

我已经能够将自己的应用程序置于固定模式.

任何帮助,将不胜感激.

Flo*_*ont 12

setLockTaskPackages()使用指定的应用程序(通过他们的包名)将可以以编程方式被固定而无需用户确认.该setLockTaskPackages()被从你的所谓的设备所有者的应用程序(在你最有可能DeviceAdminReceiveronEnabled()方法).

所以,在你的所有者设备应用程序中,你会有类似的东西:

mDPM.setLockTaskPackages("com.foo.myapp");
Run Code Online (Sandbox Code Playgroud)

然后,在您的"com.foo.myapp"应用程序中,您将被自动调用以调用:

startLockTask(); 
Run Code Online (Sandbox Code Playgroud)

您的应用程序将立即进入固定模式,无需任何用户确认.

如果您没有首先register申请setLockTaskPackages,申请将被固定,但用户必须先确认.

另请注意,当应用程序registered使用时setLockTaskPackages(),它与手动引脚有一些不同的行为:

  • 用户无法通过长按Back + Recent Apps手动取消固定应用程序.您必须以编程方式取消固定您的应用stopLockTask();
  • "主页"和"最近的应用程序"按钮是不可见的(不显示)
  • 取消固定应用程序后(通过stopLockTask()),用户将直接返回主页:即使设置了键盘锁(图案,代码或任何键盘锁定屏幕),也不会显示屏幕锁定.

  • @suniljain:不,你不能用setLockTaskPackages固定另一个应用程序.你必须使用其他应用程序的`Activity.startLockTask()`来做到这一点.@kash是的,在这个例子中,`com.foo.myapp`必须由我发布.您无法以编程方式锁定另一个您不拥有的应用程序. (3认同)