kiosk_mode
Provides helper methods for working with Lock Task mode on Android and Guided Access mode on iOS.
iOS and Android
Getting current KioskMode
On Android, it calls isInLockTaskMode
.
On iOS, it returns result of UIAccessibility.isGuidedAccessEnabled
.
final mode = await getKioskMode(); // KioskMode.enabled or KioskMode.disabled
Subscribing to KioskMode
The first event will always be the current value.
On iOS it subscribes to
UIAccessibility.guidedAccessStatusDidChangeNotification
. Android doesn't
provide such a subscription, so watchKioskMethod
checks the current state with
a configurable interval.
watchKioskMode().listen((mode) => print(mode));
Start kiosk mode
await startKioskMode();
Request to put this activity in a mode where the user is locked to a restricted set of applications.
If DevicePolicyManager#isLockTaskPermitted(String)
returns true for this
component, the current task will be launched directly into LockTask mode. Only
apps allowlisted by DevicePolicyManager#setLockTaskPackages(ComponentName, String[])
can be launched while LockTask mode is active. The user will not be
able to leave this mode until stopKioskMode()
is called. Calling this method
while the device is already in LockTask mode has no effect.
Otherwise, the current task will be launched into screen pinning mode. In this
case, the system will prompt the user with a dialog requesting permission to use
this mode. The user can exit at any time through instructions shown on the
request dialog. Calling stopKioskMode()
will also terminate this mode.
Stop kiosk mode
await stopKioskMode();
Call to end the LockTask or screen pinning mode started by startKioskMode()
.
Calling it when the app is not in kiosk mode has no effect.