gpt4 book ai didi

android - 使用设备管理器锁定任务模式时键盘不显示

转载 作者:行者123 更新时间:2023-11-29 01:03:53 31 4
gpt4 key购买 nike

在 Device Admin 中使用锁定任务模式,我似乎无法显示软键盘。

这是我正在做的:

两个应用程序,一个是管理应用程序,另一个是普通用户应用程序。目标是将手机锁定到用户应用程序。这涉及将其设置为家庭的持久首选 Activity 、使用锁定任务模式以及设置锁定任务包。

// 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。

最佳答案

我知道自从您提出问题以来已经过去了很长时间,但这也许对其他人有帮助。

查看此处找到的答案: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 起弃用)或在 Activity 上调用 setShowWhenLocked(API 27+,避难所'找到了一种在对话框中使用它的方法)。

根据您的业务流程,您可以执行以下操作之一:

  • 在设置设备管理员之前完全禁用键盘锁(设置为无)
  • 如果您有权访问所有需要键盘输入的应用程序的源代码,则在所有窗口上设置正确的标志
  • 当设备被锁定时需要键盘输入(请参阅 KeyguardManager.isKeyguardLocked):
    • 调用stopLockTask
    • 使用 KeyguardManager.requestDismissKeyguard 请求客户解锁设备
    • 一旦设备解锁 (KeyguardDismissCallback.onDismissSucceeded) 调用 startLockTask 来锁定设备
    • 出于安全原因,您应该考虑在退出时锁定设备,并要求用户在从锁定屏幕访问敏感功能时进行身份验证(请参阅 KeyguardManager.createConfirmDeviceCredentialIntent 和 KeyguardManager.isKeyguardSecure)

关于android - 使用设备管理器锁定任务模式时键盘不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49034780/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com