Allows Toasts that route through SystemUI to be implemented by a ToastPlugin. This CL also adds the ability for plugins to create a custom animation for when the toast shows and hides. Also adds logging for Toasts that get routed through SystemUI. By default, these logs aren't logged to logcat but can be enabled via adb (see LogBuffer.kt). To dump ToastLog: adb shell dumpsys activity service com.android.systemui/.SystemUIService ToastLog Bug: 169587378 Test: manually add CustomToastPlugin Test: atest ToastUITest Change-Id: I0a0b16fdc2a5ba1908054197f6dc6728f10a0d2e
4.1 KiB
Plugin hooks
Action: com.android.systemui.action.PLUGIN_OVERLAY
Expected interface: [OverlayPlugin](/frameworks/base/packages/SystemUI/plugin/src/com/android /systemui/plugins/OverlayPlugin.java)
Use: Allows plugin access to the status bar and nav bar window for whatever nefarious purposes you can imagine.
Action: com.android.systemui.action.PLUGIN_QS
Expected interface: QS
Use: Allows the entire QS panel to be replaced with something else that is optionally expandable.
Notes: To not mess up the notification panel interaction, much of the QSContainer interface needs to actually be implemented.
Action: com.android.systemui.action.PLUGIN_QS_FACTORY
Expected interface: QSFactory
Use: Controls the creation of QS Tiles and their views, can used to add or change system QS tiles, can also be used to change the layout/interaction of the tile views.
Action: com.android.systemui.action.PLUGIN_NAV_BUTTON
Expected interface: NavBarButtonProvider
Use: Allows a plugin to create a new nav bar button, or override an existing one with a view of its own.
Action: com.android.systemui.action.PLUGIN_NAV_GESTURE
Expected interface: NavGesture
Use: Allows touch events from the nav bar to be intercepted and used for other gestures.
Action: com.android.systemui.action.PLUGIN_LOCKSCREEN_RIGHT_BUTTON
Expected interface: IntentButtonProvider
Use: Allows a plugin to specify the icon for the bottom right lock screen button, and the intent that gets launched when it is activated.
Action: com.android.systemui.action.PLUGIN_LOCKSCREEN_LEFT_BUTTON
Expected interface: IntentButtonProvider
Use: Allows a plugin to specify the icon for the bottom left lock screen button, and the intent that gets launched when it is activated.
Action: com.android.systemui.action.PLUGIN_GLOBAL_ACTIONS
Expected interface: GlobalActions
Use: Allows the long-press power menu to be completely replaced.
Action: com.android.systemui.action.PLUGIN_VOLUME
Expected interface: VolumeDialog
Use: Allows replacement of the volume dialog.
Action: com.android.systemui.action.PLUGIN_NOTIFICATION_SWIPE_ACTION
Expected interface: NotificationSwipeActionHelper
Use: Control over swipes/input for notification views, can be used to control what happens when you swipe/long-press
Action: com.android.systemui.action.PLUGIN_CLOCK
Expected interface: ClockPlugin
Use: Allows replacement of the keyguard main clock.
Action: com.android.systemui.action.PLUGIN_TOAST
Expected interface: [ToastPlugin](/frameworks/base/packages/SystemUI/plugin/src/com/android /systemui/plugins/ClockPlugin.java)
Use: Allows replacement of uncustomized toasts created via Toast.makeText().
Global plugin dependencies
These classes can be accessed by any plugin using PluginDependency as long as they @Requires them.
VolumeDialogController - Mostly just API for the volume plugin
ActivityStarter - Allows starting of intents while co-operating with keyguard unlocks.