Java Android仅在手机锁定或应用程序处于后台时才激活广播接收器
我有一个聊天应用程序,我希望我的GCM广播仅在手机屏幕锁定或应用程序未激活时激活(主页按钮,而不是应用程序关闭!) 我尝试了以下方法: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")
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已停用,但如果发送,通知仍会发出
我的错在哪里