Java 在BroadcastReceiver类中打开睡眠Android设备

Java 在BroadcastReceiver类中打开睡眠Android设备,java,android,android-intent,android-studio,broadcastreceiver,Java,Android,Android Intent,Android Studio,Broadcastreceiver,我有一个启动服务的broadcastreceiver类。我想做的是,当它启动服务时,它还应该打开设备屏幕。我还没有找到一个解决方案来实现。我试着扩展WakefulBroadcastReceiver,但它不会打开屏幕,而是在设备已经打开的情况下保持设备打开。有人知道解决方法吗?试试这个方法 public void turnScreenOn(Context context) { PowerManager pm = (PowerManager) context.getSystemServic

我有一个启动服务的broadcastreceiver类。我想做的是,当它启动服务时,它还应该打开设备屏幕。我还没有找到一个解决方案来实现。我试着扩展WakefulBroadcastReceiver,但它不会打开屏幕,而是在设备已经打开的情况下保持设备打开。有人知道解决方法吗?

试试这个方法

 public void turnScreenOn(Context context) {
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    @SuppressWarnings("deprecation")
    WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
    wakeLock.acquire();
    wakeLock.release();
}
需要许可

  <uses-permission android:name="android.permission.WAKE_LOCK"/>


您是否尝试过使用完整的wakelock?@Gabeschen我尝试过使用wakelock,但它不会打开屏幕。有没有比使用wakelock更有效的方法?如果您想在活动中打开屏幕,有另一种方法,但您的需求在服务中,因此我认为这是唯一的方法