【问题标题】:Android Service Listener for the wakelock screen用于唤醒锁定屏幕的 Android 服务侦听器
【发布时间】:2026-01-05 19:45:02
【问题描述】:

大家好,

我正在开发一个紧急呼叫应用程序。我想要的是当有人使用这个特定代码时,手机会解锁,然后只有我的应用程序会运行。我想我需要一个接收器,只是想知道我是否必须为我的应用程序创建自己的主屏幕和锁定屏幕。请问有什么想法吗???

提前非常感谢:)

【问题讨论】:

    标签: android service broadcastreceiver android-wake-lock


    【解决方案1】:

    仅执行 SCREEN_OFF 和 USER_PRESENT 有一些注意事项 1)如果屏幕本身超时,屏幕关闭后手机不会立即锁定,有几秒钟的延迟 2)如果屏幕因其他原因(电话)熄灭,它可能根本没有被锁定。 3)你必须一直监控它们,如果你在手机锁定时启动你不会知道

    您可以使用KeyguardManager http://developer.android.com/reference/android/app/KeyguardManager.html 并检查inKeyguardRestrictedInputMode()

    另一个选项是使用PowerManager http://developer.android.com/reference/android/os/PowerManager.html 并检查isScreenOn(),如果您实际上只关心屏幕状态而不是键盘保护状态。

    【讨论】:

      【解决方案2】:

      您可以创建一个 BroadcastReceiver 并将其注册到您的应用程序中以侦听Intent.ACTION_SCREEN_OFFIntent.ACTION_SCREEN_ONIntent.ACTION_USER_PRESENT。在 SCREEN_OFF 和 USER_PRESENT 之间,手机被锁定。

      【讨论】:

        【解决方案3】:

        没有认可的方式来更换锁定屏幕。见Is there a way to override the lock pattern screen?

        上一个答案是另一个与这个问题合并的问题:

        我会查看ACTION_NEW_OUTGOING_CALL,以及this Android 开发人员关于接收器优先级的博文。

        【讨论】:

        • 有人可以建议我如何实现它吗?
        • 其实我想要的是接收android拨号器的按键事件
        • 嘿,太棒了,它对我有用,杰克,我使用了动作新的拨出电话,它真的很简单。但我遇到的问题是我的应用程序没有收到来自紧急拨号器的意图。我想知道是否有与清单文件相关的特定权限或操作似乎什么都没有......有什么提示吗???
        • 我敢打赌,您不能拦截紧急拨号器呼叫,以防止恶意应用阻止拨打 911 或类似电话的人。
        • 我的意思是我需要在手机锁定时触发意图。有什么建议我该怎么做吗?