Android 5.0 프로덕션 장치에서 작업 잠금을 활성화하는 방법


12

이 StackOverflow 질문 은 Android L 개발자 미리보기에서 기기 소유자 앱과 키오스크 모드를 활성화하는 방법을 탐구합니다. 이 방법에는 Android의 사용자 디버그 빌드, 장치 루팅 및 XML 파일을 루트 파일 시스템으로 복사가 필요하므로 회사 내부의 단일 기능 Android 장치를 대량 배포하는 데 적합하지 않습니다.

프로덕션 Android L 기기에 기기 소유자 앱은 어떻게 설치 되나요?


문제를 해결 했습니까?
KOTIOS


감사합니다 @Spynet-솔루션의 가장 완벽한 요약 인 것 같습니다.
Adrian Cox

답변:


14

( 편집 : 추가 테스트 후 업데이트 됨)

최신 설명서를 확인하십시오 .

이 기능은 현재 화면 고정이라고하며 앱이 기기 소유자 일 필요는 없습니다. 장치 소유자가 설정되어 있지 않으면 사용자에게 수락하라는 메시지가 표시됩니다. 그러나 키오스크 사용에는 다음과 같은 문제가 있습니다.

화면 고정을 활성화하는 방법에는 두 가지가 있습니다.

수동 : 사용자는 설정> 보안> 화면 고정에서 화면 고정을 활성화하고 최근 화면에서 녹색 핀 아이콘을 터치하여 고정하려는 작업을 선택할 수 있습니다. 프로그래밍 방식 : 프로그래밍 방식으로 화면 고정을 활성화하려면 앱에서 startLockTask ()를 호출하십시오. 요청하는 앱이 기기 소유자가 아닌 경우 확인 메시지가 표시됩니다. 장치 소유자 앱은 setLockTaskPackages () 메서드를 호출하여 사용자 확인 단계없이 앱을 고정 할 수 있습니다.

프로그래밍 방식으로 (화면 소유자가 아닌 앱 소유자) 또는 최근에 핀을 사용하여 장치에서 화면 고정을 활성화하면 다음과 같은 동작이 나타납니다.

화면 고정 기능을 활성화 할 것인지와 종료하기 위해 암호를 요구할 것인지 묻는 대화 상자가 나타납니다. 예를 누르면 상태 표시 줄과 알림이 사라지고 뒤로, 홈 및 최근 버튼이 사라지지 않습니다. 집이나 최근에 두드리면 토스트가 나타나고 화면 고정을 종료하는 방법을 사용자에게 알려줍니다.

그런 다음 사용자는 최근 통화를 누르고 있으면 화면 고정을 종료 할 수 있습니다. 사용자가 비밀번호를 요구하도록 선택한 경우 잠금 화면으로 바로 걷어차 게됩니다. 이 동작은 키오스크 imo에 적합하지 않음을 의미합니다. 키오스크 사용자는 잠금 화면을 너무 쉽게 볼 수 있습니다.

올바른 키오스크 모드를 얻으려면 기기 소유자를 설정해야합니다. Google의 설명서에 따르면 NFC를 사용 하여이 작업을 수행해야한다고 말합니다.

장치 소유자를 배포하고 활성화하려면 장치가 프로비저닝되지 않은 상태에있는 동안 프로그래밍 앱에서 장치로 NFC 데이터 전송을 수행해야합니다.

NFC를 사용하여이를 수행하는 것은 약간 복잡해 보입니다 (기기에 NFC가없는 경우 어떻게됩니까?). 아직 조사하지 않았으므로 NFC로 장치 소유자를 설정하는 방법에 대한 정보를 누구나 제공 할 수 있다면? 이제 질문의 요점이됩니다. (예 : 루팅되지 않은 기기에서 기기 소유자 설정)

그러나 장치를 루팅하면 동작이 예상대로 확인되도록 여기에서 언급 한 것처럼 Google의 이전 지침 (device_owner.xml 추가)에 따라 장치 소유자를 설정할 수 있습니다

이제 앱을 올바르게 잠글 수 있습니다. 최근 통화를 활성화하면 홈 버튼이 사라지고 사용자가 앱을 잠금 해제하지 않으면 앱을 종료 할 수 없습니다. 적절한 키오스크 모드. 최신 Lollipop 빌드로 Nexus 7 2013에서 이것을 테스트했습니다.

다음 스 니펫은 잠금을 설정합니다.

mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdminSample = new ComponentName(this, DeviceAdminSample.class);

if (mDPM.isDeviceOwnerApp(this.getPackageName())) {
    Log.d(TAG, "isDeviceOwnerApp: YES");
    String[] packages = {this.getPackageName()};
    mDPM.setLockTaskPackages(mDeviceAdminSample, packages);
} else {
    Log.d(TAG, "isDeviceOwnerApp: NO");
}

if (mDPM.isLockTaskPermitted(this.getPackageName())) {
    Log.d(TAG, "isLockTaskPermitted: ALLOWED");
    startLockTask();
} else {
    Log.d(TAG, "isLockTaskPermitted: NOT ALLOWED");
}

나는 이것이 현재 가능한 최선의 대답이라고 생각합니다. NFC 단계는 수수께끼로 남아 있지만 훨씬 더 좁은 질문입니다.
Adrian Cox

NFC 단계를 작동 시키려고했지만 성공하지 못했습니다 . 여기 에서 질문을 시작했습니다 . 또한 Google에서 키오스크 사용을위한 화면 고정 기능을 개선하라는 기능 요청이 있습니다.
tagy22

1

약간의 성가신 답변에 대해서는 언급 할 수 없지만 tagy22의 답변을 보완 dpm하면 장치 소유자를 설정할 수 있습니다 . 자세한 내용은 여기를 참조 하십시오 .


1
dpm기기에 계정 (예 : Google 계정)이 설정되어 있으면 작업이 완료되지 않습니다.
Firelord

이 경우 NFC가 적용됩니까? 계정을 추가하기 전에 기기 소유자를 설정해야한다는 인상을 받았습니다.
Troy Patrick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.