Turning on screen from receiver/service

后端 未结 3 1878
再見小時候
再見小時候 2020-11-27 17:31

I would like my app to be able to turn the screen on and display my app. Let\'s say I\'m setting an alarm and every hour I want my app to be displayed for 2 mins before the

3条回答
  •  一向
    一向 (楼主)
    2020-11-27 17:53

    You can use this code to turn the screen on.

    lock = ((KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE)).newKeyguardLock(KEYGUARD_SERVICE);
    powerManager = ((PowerManager) getSystemService(Context.POWER_SERVICE));
    wake = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
    
    lock.disableKeyguard();
    wake.acquire();
               getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
    

    You need the following permission in AndroidManifest.xml file:

    
    
    

    EDIT (USE THIS ONE, NOTHING IS DEPRECATED):
    There is an one more alternative for doing this, for that you need to launch an activity, In the activity onCreate() you need to add the flags to the window. For example:

       @Override
        protected void onCreate(Bundle savedInstanceState) {
          getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);`
    }
    

提交回复
热议问题