【问题标题】:Broadcast receiver and service for screen off/on屏幕关闭/打开的广播接收器和服务
【发布时间】:2023-04-04 10:38:01
【问题描述】:

好的,所以我在尝试让广播接收器和服务在屏幕关闭和屏幕打开的情况下正常工作时遇到了一些问题。

我想做的是在屏幕熄灭或屏幕亮起时启动一些东西。我让它从一个测试活动中工作,但该活动必须当前正在运行。我需要它从后台开始。

现在,我知道在清单中使用意图过滤器不适用于 screen_off 和 on。我怎么能做到这一点?我猜这有点像锁屏...

屏幕关闭 --> 开始一些事情示例活动或创建日志消息作为 toast 不起作用

【问题讨论】:

  • “现在,我知道在清单中使用意图过滤器不适用于 screen_off 和 on。” - 你怎么会知道这事?为什么它不起作用?
  • 研究和阅读。也试过了...stackoverflow.com/questions/2575242/… 是另一个例子
  • 那么,您为什么不将该链接放在您自己的问题中,以说明您是如何知道这一点的呢?然而,更重要的是,您为什么不接受该问题答案的建议呢?总而言之……如果您有一个正在运行的ActivityService,那么您可以注册一个BroadcastReceiver 来监听这些事件,并且它将在这些对象的生命周期内存在。但是,您不应该期望能够“全局”监控它们。毕竟,如果我按下手机上的“开启”按钮只是为了查看锁定屏幕上的时间,我为什么要让你的应用做任何事情呢?
  • 嗯,你希望我的应用做某事的一个例子是,如果它是一个锁定屏幕或覆盖部分锁定屏幕的东西,有点像一个小部件......

标签: android eclipse service broadcastreceiver


【解决方案1】:

添加接收器:

public class BroadcastReceiverScreenListener extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    if (Objects.equals(intent.getAction(), Intent.ACTION_SCREEN_OFF)) {

        ** Do your stuff**

    }
}

来自文档: 您不能通过在 清单,只有通过显式注册它 registerReceiver(BroadcastReceiver, IntentFilter) 这是一个受保护的意图,只能发送 由系统决定。

【讨论】:

    猜你喜欢
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多