【发布时间】:2018-02-28 15:43:18
【问题描述】:
在设备管理中使用锁定任务模式,我似乎无法显示软键盘。
这就是我正在做的事情:
两个应用程序,一个是管理应用程序,另一个是普通用户应用程序。目标是将手机锁定到用户应用程序。这包括将其设置为家庭的持久首选活动、使用锁定任务模式以及设置锁定任务包。
// 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 设置,因此设置应用程序也是允许的。启用管理员(以便启用这两个策略)并重新启动后,手机会立即正确打开我的用户应用程序,并且手机会锁定到单个应用程序。但是,对于任何 EditTexts/文本输入,键盘都不会出现。这几乎就像系统试图显示键盘一样,因为后退按钮箭头从“返回”位置(指向左)变为“关闭”位置(指向下方)。
我已经尝试了几天试图找出根本原因,但我发现的唯一一件事是调用
setLockTaskPackages(...)
似乎是锁定任务模式的罪魁祸首。我试图在锁定任务模式下将键盘应用程序添加为允许的包,但这没有任何区别。此外,键盘也无法从其他允许的应用程序中打开(android 设置),因此我认为这不是我的用户应用程序中配置错误的原因。
我在 Nexus 5X、Google Pixel 和 Google Pixel 2 上对此进行了测试。全部运行 Stock 8.1。
【问题讨论】: