Java Android仅在手机锁定或应用程序处于后台时才激活广播接收器

Java Android仅在手机锁定或应用程序处于后台时才激活广播接收器,java,android,broadcastreceiver,google-cloud-messaging,Java,Android,Broadcastreceiver,Google Cloud Messaging,我有一个聊天应用程序,我希望我的GCM广播仅在手机屏幕锁定或应用程序未激活时激活(主页按钮,而不是应用程序关闭!) 我尝试了以下方法: boolean receiver_working = false; public void enableBroadcastReceiver(){ IntentFilter filter = new IntentFilter(); filter.addAction("com.google.android.c2dm.intent.RECEIVE")

我有一个聊天应用程序,我希望我的GCM广播仅在手机屏幕锁定或应用程序未激活时激活(主页按钮,而不是应用程序关闭!)

我尝试了以下方法:

boolean receiver_working = false;

public void enableBroadcastReceiver(){
    IntentFilter filter = new IntentFilter();
    filter.addAction("com.google.android.c2dm.intent.RECEIVE");
    filter.addAction("com.google.android.c2dm.intent.REGISTRATION");
    filter.addCategory("com.flipflopdev.epvp_aj1987_chat");
    registerReceiver(new GcmBroadcastReceiver(), filter);
    Toast.makeText(getApplicationContext(), "Enabled broadcast receiver", Toast.LENGTH_SHORT).show();
    receiver_working = true;
   }

public void disableBroadcastReceiver(){
    ComponentName receiver = new ComponentName(getApplicationContext(), GcmBroadcastReceiver.class);
    PackageManager pm = getApplicationContext().getPackageManager();

    pm.setComponentEnabledSetting(receiver,
            PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
            PackageManager.DONT_KILL_APP);
    Toast.makeText(getApplicationContext(), "Disabled broadcst receiver", Toast.LENGTH_SHORT).show();
    receiver_working = false;
   }

@Override
public void onDestroy() {
    super.onDestroy();
    if(receiver_working) {
        disableBroadcastReceiver();
    }
}

@Override
public void onPause() {
    super.onPause();
    if(!receiver_working) {
        enableBroadcastReceiver();
    }
}
    @Override
public void onResume() {
    super.onResume();
    checkPlayServices();
    if(receiver_working) {
        disableBroadcastReceiver();
    }
}
问题是onResume()在活动刚开始时就启动,这就是为什么我有布尔变量。当我现在通过home按钮离开应用程序时,GCM通知会像应该的那样发出(因为BR已激活),当我回到应用程序时,会显示BR已停用,但如果发送,通知仍会发出

我的错在哪里