kiosk_lock_task 0.0.2 copy "kiosk_lock_task: ^0.0.2" to clipboard
kiosk_lock_task: ^0.0.2 copied to clipboard

PlatformAndroid

Android Lock Task Mode kiosk controls for Flutter apps, including Device Owner kiosk support and boot launch handling.

kiosk_lock_task #

Android Lock Task Mode를 Flutter에서 켜고 끄는 플러그인입니다.

일반 앱 상태에서는 Android의 화면 고정 흐름으로 동작할 수 있고, 앱이 Device Owner로 등록되어 있으면 완전한 키오스크 Lock Task Mode로 동작합니다.

Install #

pub.flutter-io.cn에 퍼블리싱된 패키지를 사용하세요.

dependencies:
  kiosk_lock_task: ^0.0.2

Android setup #

앱의 launcher activity에 Lock Task 속성을 추가하세요.

<activity
    android:name=".MainActivity"
    android:lockTaskMode="if_whitelisted"
    ...>
</activity>

이 설정은 앱을 바로 키오스크 모드로 켜는 옵션이 아닙니다. Android에 "이 Activity는 Device Owner가 허용 목록에 넣었을 때 Lock Task 대상이 될 수 있다"라고 선언하는 설정입니다.

Device Owner 기반 키오스크 진입 흐름은 다음과 같습니다.

  1. 앱이 Device Owner로 등록되어 있어야 합니다.
  2. 플러그인이 DevicePolicyManager.setLockTaskPackages()로 앱 패키지를 허용합니다.
  3. 플러그인이 현재 Activity에서 startLockTask()를 호출합니다.
  4. Android가 android:lockTaskMode="if_whitelisted"로 선언된 Activity를 Lock Task Mode로 잠급니다.

ADB setup #

완전한 Device Owner 기반 키오스크 모드를 쓰려면 앱 설치 후 ADB로 Device Owner를 등록해야 합니다. 이 작업은 보통 기기 초기화 직후, Google/Samsung 계정을 추가하기 전에 진행해야 합니다.

  1. 기기 연결 확인:

    adb devices -l
    
  2. APK 설치:

    adb install -r build/app/outputs/flutter-apk/app-debug.apk
    
  3. Device Owner 등록:

    adb shell dpm set-device-owner your.app.id/com.nailbiter.kiosk_lock_task.KioskDeviceAdminReceiver
    

    예를 들어 application id가 com.nailbiter.gogo_kiosk라면:

    adb shell dpm set-device-owner com.nailbiter.gogo_kiosk/com.nailbiter.kiosk_lock_task.KioskDeviceAdminReceiver
    
  4. Device Owner 상태 확인:

    adb shell dumpsys device_policy | grep -i "device owner"
    
  5. Lock Task 상태 확인:

    adb shell dumpsys activity activities | grep -i "locktask"
    

이미 Google/Samsung 계정이 들어간 기기에서는 Android가 Device Owner 등록을 거부할 수 있습니다. 완전 키오스크 용도라면 초기화 직후 계정 추가 전에 등록하세요.

개발 중 Device Owner 등록을 되돌려야 할 때는 보통 기기 초기화가 가장 확실합니다. Android 정책상 Device Owner 앱은 일반 앱처럼 쉽게 삭제되거나 해제되지 않습니다.

Usage #

import 'package:kiosk_lock_task/kiosk_lock_task.dart';

const kiosk = KioskLockTask();

await kiosk.setLaunchOnBootEnabled(true);
final isDeviceOwner = await kiosk.isDeviceOwner();
final enabled = await kiosk.enable();

await kiosk.disable();

enable()은 자동 재진입 설정을 켜고 현재 Activity에서 startLockTask()를 호출합니다. disable()은 자동 재진입 설정을 끄고 stopLockTask()를 호출합니다.

부팅 후 앱 자동 실행은 기본적으로 꺼져 있습니다.

await kiosk.setLaunchOnBootEnabled(true);

이 값을 켜면 BOOT_COMPLETED, LOCKED_BOOT_COMPLETED, MY_PACKAGE_REPLACED 이벤트에서 앱의 기본 launcher activity를 실행합니다.

0
likes
155
points
10
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Android Lock Task Mode kiosk controls for Flutter apps, including Device Owner kiosk support and boot launch handling.

Repository (GitHub)
View/report issues

Topics

#android #kiosk #lock-task #flutter-plugin

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on kiosk_lock_task

Packages that implement kiosk_lock_task