在Device Admin中使用锁定任务模式,我似乎无法显示软键盘。
这就是我正在做的事情:
两个应用程序,一个是管理应用程序,另一个是常规用户应用程序。目标是将手机锁定到用户应用程序。这涉及将其设置为home的持久首选活动,使用锁定任务模式和设置锁定任务包。
// In my admin application
private static final String[] PACKAGES = new String[]{
BuildConfig.APPLICATION_ID,
"com.android.settings",
"com.xyz.myapp"
};
final IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MAIN);
intentFilter.addCategory(Intent.CATEGORY_HOME);
intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
devicePolicyManager.addPersistentPreferredActivity(adminComponent, intentFilter, componentName);
devicePolicyManager.setLockTaskPackages(adminComponent, PACKAGES);
// In my user app main activity:
startLockTask();
我们的应用程序中有一些工作流需要用户调整Android设置,因此也允许使用设置应用。启用admin(以便启用这两个策略)并重新启动后,手机会立即正确打开我的用户应用程序,并且手机将锁定到单个应用程序。但是,任何EditTexts /文本输入都不会出现键盘。这几乎就像系统试图显示键盘一样,因为后退按钮箭头从“后退”位置(指向左侧)变为“关闭”位置(指向下方)。
我已经尝试了几天试图找出根本原因,但我发现的唯一一件事就是致电
setLockTaskPackages(...)
似乎是锁定任务模式的罪魁祸首。我试图在锁定任务模式下将键盘应用程序添加为允许的包,但这没有任何区别。此外,键盘也无法从其他允许的应用程序(Android设置)打开,因此我不认为这是我的用户应用程序中错误配置的内容。
我在Nexus 5X,Google Pixel和Google Pixel 2上测试了这一点。所有正在运行的股票8.1。
答案 0 :(得分:1)
我知道自您提出问题以来已经过去了很长时间,但这也许对其他人有所帮助。
查看此处找到的答案:Android 8.1 (API 27) - Keyboard not showing in Kiosk-mode app after reboot 基本上,您不应该执行自己的操作:锁定设备时不要启动锁定任务模式,因为用户可能无法解锁设备
话虽这么说,您可以在所有窗口上设置FLAG_SHOW_WHEN_LOCKED(从API 27起不推荐使用)或FLAG_DISMISS_KEYGUARD(从API 26起不推荐使用)(即使您打开并需要输入对话框),也可以在活动(API 27 +,haven)上调用setShowWhenLocked找不到在对话框上使用此方法的方法。
根据您的业务流程,您可以执行以下操作之一: