Files
frameworks_base/packages/SystemUI/docs/plugin_hooks.md
Beverly b7ef5de9e0 Add Plugin interface for Toasts
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
2020-09-30 20:48:29 -04:00

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.