Java GCM不是';当按下电源按钮(睡眠)几秒钟后,t接收到信息
请帮我解决这个问题伙计们。。 手机仅在设备开机时接收信息。 当按下电源按钮关闭一秒钟左右(20-30)时,它停止接收,并在打开时继续接收。 这是我的听筒Java GCM不是';当按下电源按钮(睡眠)几秒钟后,t接收到信息,java,android,android-broadcastreceiver,Java,Android,Android Broadcastreceiver,请帮我解决这个问题伙计们。。 手机仅在设备开机时接收信息。 当按下电源按钮关闭一秒钟左右(20-30)时,它停止接收,并在打开时继续接收。 这是我的听筒 public class GcmBroadcastReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("GCM ", "GCM CO
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("GCM ", "GCM COME");
ComponentName comp = new ComponentName(context.getPackageName(),
MainService.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
}
为Wakelock创建一个如下所示的类
@SuppressLint("Wakelock")
public class WakeLocker {
private static PowerManager.WakeLock wakeLock;
@SuppressWarnings("deprecation")
public static void acquire(Context context) {
if (wakeLock != null)
wakeLock.release();
PowerManager pm = (PowerManager) context
.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "WakeLock");
wakeLock.acquire();
}
public static void release() {
if (wakeLock != null)
wakeLock.release();
wakeLock = null;
}
}
并在BroadcastReceiver的onReceive方法中写入这行
// Waking up mobile if it is sleeping
WakeLocker.acquire(getApplicationContext());
// Releasing wake lock
WakeLocker.release();
电话铃响了。但当我按下电源按钮时,它仍然没有收到任何信息。我甚至把它放在带有循环语句的服务上,使它始终处于唤醒状态,但仍然没有收到消息,但当我解锁手机时,消息会直接出现。实际上,我想要的是,即使我的手机处于锁定模式、睡眠等状态,GCM也能工作或仍然能够收到消息,除非关机,如BBM,wassap line应用程序,即使手机处于关闭模式(关机除外),仍能接收信息。提前谢谢各位。