Я пытаюсь сделать экран всегда включенным, пока мое тестовое приложение находится на переднем плане с запущенным запуском Notification. Он отлично работает, когда приложение находится в состоянии возобновления, но оно не работает, когда я нажимаю кнопку «домашний/средний», чтобы включить приложение в состояние паузы, показывая текущее уведомление в строке состояния уведомления.Почему FLAG_KEEP_SCREEN_ON работает неправильно?
Почему getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
не работает на переднем плане/в режиме паузы?
MainActivity:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.main);
...
NotificationCompat.Builder OnGoingStatusBar = new NotificationCompat.Builder(this);
OnGoingStatusBar.setSmallIcon(R.drawable.image);
OnGoingStatusBar.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));
OnGoingStatusBar.setTicker(Test);
OnGoingStatusBar.setContentTitle("Test");
OnGoingStatusBar.setContentText("Testing Message");
OnGoingStatusBar.setWhen(System.currentTimeMillis());
OnGoingStatusBar.setAutoCancel(false);
OnGoingStatusBar.setContent(notificationView).build();
OnGoingStatusBar.setOngoing(true); //Create OnGoing Status Bar
OnGoingStatusBar.setPriority(Notification.PRIORITY_MAX);
NotificationManager.notify(STATUSBAR_ID, OnGoingStatusBar.build());
}
Он работает только тогда, когда приложение имеет окно, то есть когда пользователь может видеть его пользовательский интерфейс. – StoneBird
'getWindow()'. У вас есть окно только тогда, когда видно – njzk2
спасибо за ответ. Есть ли способ обхода, который я могу достичь своей цели? Я знаю, что это работает на более старой версии Android: \t pm = (PowerManager) getSystemService (Context.POWER_SERVICE); \t km = (KeyguardManager) getSystemService (Context.KEYGUARD_SERVICE); \t mKeyguardLock = km.newKeyguardLock ("INFO"); \t \t mWakeLock = pm.newWakeLock (PowerManager.FULL_WAKE_LOCK | \t \t \t \t \t \t \t PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "INFO"); \t \t mKeyguardLock.disableKeyguard(); // убрать блокировку клавиатуры \t mWakeLock.acquire(); – YRTM2014