问题标签 [keyguard]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1348 浏览

android - 屏幕关闭时重新启用键盘保护

这可能看起来与其他问题相似,但我一直在寻找一段时间,并没有找到适用于我的特定情况的解决方案。

我的应用程序的 BroadcastReceiver 当前获取完整的唤醒锁,禁用键盘保护,然后启动用户先前选择的另一个活动(另一个应用程序、快捷方式意图等)。我遇到的问题是当我尝试重新启用键盘保护时(我相信唤醒锁已被释放,但我会在其他时间确保这一点)。

由于调用了另一个活动,因此我无法使用 Window 标志,因此我一直在尝试使用 KeyguardManager.KeyguardLock 来禁用和启用。此外,由于我无法控制用户在其他应用程序中的操作,因此我想在下次屏幕关闭时重新启用键盘保护。我知道为此使用常规的 BroadcastReceiver 是行不通的,所以我一直在尝试实现一个 Service 来处理它,这就是我遇到麻烦的地方。

目前,我在第一个 BroadcastReceiver 被触发时启动服务,我让服务在 OnCreate 中为 ACTION_SCREEN_OFF 注册另一个 BroadcastReceiver,并让 ScreenOffReceiver 调用服务的 onStartCommand,这应该重新启用键盘保护。我在 onStartCommand 中有一个布尔值,可以知道哪个 BroadcastReceiver 调用了它。

现在,键盘保护要么没有重新启用,要么重新启用太快(在屏幕关闭之前)。有什么想法吗?

这是一些代码:

AlarmActivity 由第一个 BroadcastReceiver 调用以打开用户选择的操作:

这是服务:

这是 ScreenOffReceiver:

0 投票
0 回答
1666 浏览

android - 我怎样才能替换keyguardmanager

我有一个关于制作锁屏的问题。

开发者网站推荐使用其中一种方法

  1. 方法:

    /li>
  2. 方法(已弃用)

    /li>

当我使用 1. 方法时,当屏幕通过电源按钮打开时,它立即再次关闭(编辑:尽力理解它,不确定我是否正确)。

当我使用 1. 和 2. 方法时没有问题!

我想替换这个方法

有什么办法可以代替这种方法吗?

非常感谢你阅读这篇文章:)

0 投票
4 回答
30830 浏览

android - Android - 如何完全禁用键盘保护

我想控制设备上的启用/禁用键盘保护。为此,我使用 Android SDK 的 DevicePolicyManager 和 KeyguardLock API。

下面是我管理这个的实现:

}

它在屏幕锁定方面工作正常,但解锁功能可以解决一些问题:有时它可以按我的意愿工作(完全删除任何类型的键盘保护屏幕),但有时它会显示“滑动解锁”键盘保护屏幕。

你知道这里有什么问题吗?如何使其稳定工作(至少在所有情况下都显示“解锁以滑动”或完全移除键盘保护)?

在此先感谢您的帮助。

编辑

只想指出我的解决方案有效,但问题是它工作不稳定(有时会完全移除键盘保护,有时会显示“滑动”键盘保护)。而且我不仅在显示某些活动时使用它来禁用键盘保护,而且还用于控制通用设备的锁定/解锁,因此我在服务中使用此代码,因此我无法调用,getWindow().addFlags(..)因为我没有窗口申请。

只是想知道也许有人处理过这种不稳定的行为。

0 投票
1 回答
884 浏览

android - 使用安全键卫在活动之间进行主动转换很奇怪

我有我的主要活动 A,当用户按下按钮时,我打开另一个活动 B。但是当这种情况发生时,B 不仅仅出现在 A 的顶部:

  • A消失
  • 安全键卫出现
  • B出现

当我摆脱 B 时,同样的事情也会发生。这很烦人,因为屏幕上有很多没有真正用途的闪烁。有没有办法在键盘保护处于活动状态时实现从 A 到 B 的直接转换而不将 2 个活动合并为 1 个?

这是我在 onCreate 中为这两个活动所做的事情:

这是我开始活动的方式:

我还尝试在活动主题中设置 null android:windowAnimationStyle 但没有运气。

更新:我提交了这个错误: https ://code.google.com/p/android/issues/detail?id=68465&thanks=68465&ts=1397301860

谢谢,泰奥

0 投票
1 回答
1160 浏览

android - 如何从睡眠中唤醒安卓设备并播放视频

我想唤醒设备并播放视频。这是我唤醒和禁用密钥保护的代码片段。

视频正在播放,但设备未唤醒。

有什么建议么?

已编辑
我找到了一个可行的解决方案,并将其发布为答案。
如果有更好的解决方案,我想学习并了解它。
谢谢你。

0 投票
1 回答
269 浏览

android - Android - 屏幕关闭时无法重新启用键盘保护

我试图让我的应用程序在经过 x 时间后重新启用键盘保护(使用警报管理器)。基本上,这就是我所做的:

假设我将屏幕锁定设置为在 5 分钟后启用。

  1. 我的应用程序启动并且我禁用了键盘保护 - 效果很好!
  2. 我创建了一个计时器(使用警报管理器)在 3 分钟后锁定屏幕,我在日志中看到警报在 3 分钟后响起,并且重新启用键盘保护的代码开始启动。5 分钟后屏幕熄灭,我单击电源按钮并启用键盘保护 - 效果很好!基本上,只要在屏幕打开时完成所有操作,一切都会正常工作。

现在假设我们保持与上面相同的场景,但将步骤 2 更改为:

  1. 和上面一样
  2. 我创建了一个计时器(使用警报管理器)在 10 分钟后锁定屏幕。屏幕在 5 分钟后熄灭,我仍然在日志中看到警报在 10 分钟后正确响起并重新启用键盘保护。但是,当我在那之后点击电源按钮时,我仍然可以进入应用程序而不会遇到锁定屏幕。如果我单击电源按钮或等待屏幕再次关闭,那么我将遇到锁定屏幕。

这似乎向我表明,重新启用键盘保护仅在屏幕再次亮起后才会生效,并且在屏幕关闭时您无法启用它。我错了还是有其他方法可以解决这个问题?即使代码在屏幕关闭时重新启用锁定保护,我也希望能够将用户踢回锁定屏幕。

谢谢!

0 投票
0 回答
96 浏览

android - 避免状态栏在不隐藏的情况下展开

我想在我的应用程序中添加一个键盘保护,就像 Go locker / MX player 中使用的一样。

这两个应用程序都允许您查看状态栏,但您无法将其拉下。我已经找到了一些在状态栏上绘制的技巧,但这不是我想要的……我希望状态栏始终可见但不可访问。

我知道有一个系统权限允许使状态栏不可扩展,但当然,没有办法将此权限包含在非系统应用程序中。您知道使状态栏不可扩展的其他方法吗?

谢谢你,文克

0 投票
4 回答
2093 浏览

android - 解锁模拟器或设备以进行 Android 测试

我正在编写 Android 功能测试。我需要设备处于唤醒状态并可视化应用程序以便它们工作。为此,我咨询了Android 开发人员。但是,建议的解决方案存在几个问题:

  • 建议的方法现在有几个不推荐使用的方法。Android API 现在建议我在窗口上使用标志:

此类在 API 级别 13 中已弃用。请改用 FLAG_DISMISS_KEYGUARD 和/或 FLAG_SHOW_WHEN_LOCKED;这允许您在应用程序移入和移出前台时无缝隐藏键盘保护,并且不需要请求任何特殊权限。由 newKeyguardLock(String) 返回的句柄,允许您禁用/重新启用键盘保护。

我尝试了这个建议,但是,与不推荐使用的解决方案相反,flag one jsut 对我不起作用 - 它不会解锁设备。我还找到了确认标志解决方案不稳定性的消息来源(例如对此答案的评论)。

  • 第二个问题是我需要为被测应用程序添加权限。我发现这是一种非常错误的方法(修改被测代码以便能够对其进行测试)。我找到了几个建议我使用src/debug/AndroidManifest.xml的地方(例如这个这个。然而,它并没有像所说的那样发生 - 调试 Mainfest 不会包含在设备上部署的东西中。它与我构建和部署的方式有关吗?我使用 Eclipse 进行开发 (ADT)。只有当我使用像 ant 这样的构建工具时,这种清单注入才会起作用吗?

总而言之 - 有人可以建议在我的测试执行时解锁和保持设备唤醒的稳定解决方案吗?

编辑

我现在发现RobotiumunlockScreen在他们最新版本的框架中也包含了方法。它完全使用了上面建议的窗口标志,也不能在我的设备上运行。

0 投票
1 回答
1261 浏览

android - Activity 从睡眠模式启动立即关闭?

我有一个应用程序,它是一种闹钟。我有一个奇怪的问题。

原理很简单:alarmmanager 发送一个广播启动一个服务和一个活动。

该服务将手机振动 10 秒,然后终止活动及其本身。该活动显示一个关闭按钮。如果您单击它,它将停止服务及其本身。

如果在手机开机时接收到广播,那么它工作正常(活动开始并且手机振动)。

如果在手机处于睡眠模式时收到广播,则活动开始并立即停止(除非您在某处放置 Thread.sleep,否则您实际上无法在屏幕上看到它)。该服务工作正常。

我不明白为什么活动在创建后就停止了?

在 logcat 中,我有最后两行在它工作时我没有:

谢谢。


这是接收器中的代码:

活动 :

和服务:

编辑 :

经过其他一些测试后,似乎即使没有启动服务,该应用程序也不希望我的活动停留在 ui 上。

广播触发活动,设备唤醒并运行活动,但随后关闭(它立即从 onresume 变为 onpause)。

有或没有键盘保护,结果是一样的,我的活动开始和停止。

应该很简单吧?我只是尝试通过触发广播从睡眠模式运行活动。

0 投票
0 回答
54 浏览

android - 从键盘保护控制媒体播放器

我需要从键盘锁(锁定屏幕)控制媒体播放器应用程序。

  • 通知播放歌曲
  • 播放/暂停控制
  • 专辑图片预览

但我不知道怎么做。

我认为 android 有这样的简单功能来通知键盘保护。