android - Activity 中的 BroadcastReceiver

标签 android broadcastreceiver

我想更改 Activity 的 KeepScreenOn 值,因此我想在 Activity 中使用 BroadcastReceiver。我在 onCreate 中注册接收器:

registerReceiver(receiver, new IntentFilter("ACTION_POWER_CONNECTED"));
            registerReceiver(receiver, new IntentFilter("ACTION_POWER_DISCONNECTED"));

并在 onPause 中取消注册:

unregisterReceiver(receiver);

接收器看起来像这样:

    private BroadcastReceiver receiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals(Intent.ACTION_POWER_CONNECTED)) {
            findViewById(R.id.fullscreen_content).setKeepScreenOn(true);
        } else if (action.equals(Intent.ACTION_POWER_DISCONNECTED)) {
            media=MediaPlayer.create(context,R.raw.battery);
            media.start();
            findViewById(R.id.fullscreen_content).setKeepScreenOn(false);
        }
    }
};

没有错误,在断开/连接电源时它不会改变任何东西。有什么建议吗?

最佳答案

您应该使用定义的常量,而不是字符串值:

IntentFilter(Intent.ACTION_POWER_CONNECTED)

代替:

IntentFilter("ACTION_POWER_CONNECTED")

关于android - Activity 中的 BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26651120/

相关文章:

java - 保存数据库标准

java - 如何以编程方式设置广播接收器属性?

android - 具有多个任务的引导接收器工作异常

android - BroadcastReceiver 和 PHONE_STATE 不起作用

android - 如何在android中手动停止BroadcastReceiver

java - 安卓 Lollipop 。通知不起作用

android - 通过服务和 Activity 共享单例java类

android - 如何知道 Google Analytics 是否正常工作(Android 应用程序)?

安卓特殊目录

android - 让 BroadcastReceiver 在后台作为服务运行 + 开机后自动启动