Controls Activity - Always close when keyguard becomes active
The ControlsActivity can be launched over lockscreen when the user permits, or only while unlocked. However, leaving the occluded activity up while the screen is off can lead to potential issues, as well as just being against user expectations for the activity. Fixes: 197391802 Test: manual, launch device controls and power the screen off Change-Id: I50a4d17a24c0d73f320f2637488f7ae502dddae9
This commit is contained in:
@@ -16,6 +16,10 @@
|
||||
|
||||
package com.android.systemui.controls.ui
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
@@ -23,18 +27,25 @@ import android.view.WindowInsets
|
||||
import android.view.WindowInsets.Type
|
||||
|
||||
import com.android.systemui.R
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher
|
||||
import com.android.systemui.controls.management.ControlsAnimations
|
||||
import com.android.systemui.util.LifecycleActivity
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
* Displays Device Controls inside an activity
|
||||
* Displays Device Controls inside an activity. This activity is available to be displayed over the
|
||||
* lockscreen if the user has allowed it via
|
||||
* [android.provider.Settings.Secure.LOCKSCREEN_SHOW_CONTROLS]. This activity will be
|
||||
* destroyed on SCREEN_OFF events, due to issues with occluded activities over lockscreen as well as
|
||||
* user expectations for the activity to not continue running.
|
||||
*/
|
||||
class ControlsActivity @Inject constructor(
|
||||
private val uiController: ControlsUiController
|
||||
private val uiController: ControlsUiController,
|
||||
private val broadcastDispatcher: BroadcastDispatcher
|
||||
) : LifecycleActivity() {
|
||||
|
||||
private lateinit var parent: ViewGroup
|
||||
private lateinit var broadcastReceiver: BroadcastReceiver
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@@ -62,6 +73,8 @@ class ControlsActivity @Inject constructor(
|
||||
WindowInsets.CONSUMED
|
||||
}
|
||||
}
|
||||
|
||||
initBroadcastReceiver()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
@@ -83,4 +96,25 @@ class ControlsActivity @Inject constructor(
|
||||
|
||||
uiController.hide()
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
|
||||
broadcastDispatcher.unregisterReceiver(broadcastReceiver)
|
||||
}
|
||||
|
||||
private fun initBroadcastReceiver() {
|
||||
broadcastReceiver = object : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
val action = intent.getAction()
|
||||
if (Intent.ACTION_SCREEN_OFF.equals(action)) {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val filter = IntentFilter()
|
||||
filter.addAction(Intent.ACTION_SCREEN_OFF)
|
||||
broadcastDispatcher.registerReceiver(broadcastReceiver, filter)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user