기기 관리자 개요

기기 관리자 지원 중단. Android 9부터 (API 수준 28)에 따라 일부 관리자 정책은 지원 중단된 것으로 표시됩니다. 호출됩니다. 이제 이 변경 사항에 대응할 준비를 하는 것이 좋습니다. 배우기 위해 마이그레이션 옵션을 확인하려면 <ph type="x-smartling-placeholder"></ph> 기기 관리자 지원 중단.

Android는 다음을 제공하여 엔터프라이즈 앱을 지원합니다. Android 기기 관리 API Device Administration API는 시스템 수준에서 관리할 수 있습니다 이러한 API를 사용하면 보안 인지 앱을 개발하는 데 사용할 수 있습니다. 전문가는 직원 디바이스에 대한 보다 풍부한 제어가 필요합니다 예를 들어 이메일 앱의 내장형 Android 이메일 앱은 이러한 API를 Exchange 지원팀 이메일 앱을 통해 Exchange 관리자는 영숫자 비밀번호 또는 숫자 비밀번호 등의 비밀번호 정책 시행 여러 기기에서 사용할 수 있습니다. 또한 관리자는 원격으로 데이터를 삭제 (즉, 기기를 분실하거나 도난당한 경우). Exchange 사용자가 동기화할 수 있음 이메일 및 캘린더 데이터

이 문서는 엔터프라이즈 애플리케이션 개발, 솔루션을 제공합니다. Kubernetes와 같은 다양한 기능을 기기에 더 강력한 보안을 제공하기 위해 Device Administration API에서 제공하는 직원 기기에서 Android로 구동했습니다.

참고: 업무 정책 수립에 대한 자세한 내용은 Android for Work 배포를 위한 컨트롤러는 다음을 참조하세요. 기기 정책 컨트롤러를 빌드합니다.

헤드리스 기기 소유자 모드

Android 14 (API 수준 34)에는 헤드리스 시스템 사용자 모드( 어떤 UserManager.isHeadlessSystemUserMode 드림 는 true을 반환합니다.) 헤드리스 시스템 사용자 모드에서 시스템 사용자는 백그라운드 사용자이며 최종 사용자를 위해 추가 포그라운드 사용자에 의존 상호작용하지 않습니다. 또한 Android 14에서는 헤드리스 기기 소유자 연결 모드 이렇게 하면 모든 프로필에 프로필 소유자가 연결된 사용자 기기 소유자가 설정된 시스템 사용자가 아닙니다.

헤드리스 시스템 사용자로 구성된 기기 (시스템 사용자가 백그라운드에서 실행), 범위 내 전역인 기기 정책만 지원 (모든 사용자에게 적용되는 정책)이 포그라운드 사용자에게 적용됩니다. 생성할 수 있습니다. 자세한 내용은 addUserRestriction 드림 참조하세요.

<ph type="x-smartling-placeholder">

Android 기기 제조업체는 안내 source.android.com에 게시되었습니다.

Device Administration API 개요

다음은 Device Administration API를 사용할 수 있는 앱 유형의 예입니다.

  • 이메일 클라이언트
  • 원격 초기화를 실행하는 보안 앱
  • 기기 관리 서비스 및 앱

기본 원리

Device Administration API를 사용하여 사용자가 관리 중인 기기 관리자 앱을 작성합니다. 할 수 있습니다. 기기 관리자 앱은 사용자가 정책 작동 방식은 다음과 같습니다.

  • 시스템 관리자는 원격/로컬 장치 보안 정책 이러한 정책은 앱이 서드 파티에서 동적으로 정책을 가져올 수 있는 경우 있습니다.
  • 이 사용자의 기기에 설치됩니다. Android는 현재 자동화된 프로비저닝 솔루션이 없음 시스템 관리자가 사용할 수 있는 몇 가지 방법은 배포하는 방법은 다음과 같습니다. <ph type="x-smartling-placeholder">
      </ph>
    • Google Play.
    • 다른 스토어에서 설치하도록 사용 설정
    • 이메일이나 웹사이트와 같은 다른 수단을 통해 앱을 배포
  • 시스템에서 사용자에게 기기 관리자 앱을 사용 설정하라는 메시지를 표시합니다. 방법 언제 앱이 구현되는지에 따라 다릅니다.
  • 사용자가 기기 관리자 앱을 사용 설정하면 정책을 준수해야 합니다 이러한 정책을 준수할 경우 일반적으로 다음과 같은 이점이 있습니다. 민감한 시스템 및 데이터에 대한 접근

사용자가 기기 관리자 앱을 사용 설정하지 않으면 앱은 기기에 비활성 상태로 남아 있습니다. 사용자는 앱 정책의 적용을 받지 않고 반대로 앱의 혜택도 받지 않습니다(예: 데이터 동기화를 사용할 수 없을 수도 있음).

사용자가 정책을 준수하지 않는 경우 (예: 사용자가 앱이 가이드라인을 위반하는지 여부를 어떻게 처리할지 알 수 있습니다. 그러나 일반적으로 이렇게 하면 사용자가 데이터를 동기화할 수 있습니다.

기기가 다른 정책을 요구하지 않는 서버에 연결을 시도하는 경우 Device Administration API에서 지원되지 않는 경우 연결은 허용됩니다. Device Administration API는 현재 프로비저닝할 수 있습니다 즉, 기기 (예: 레거시 기기)에서 명시된 정책을 모두 지원하지 않는 경우 연결해야 합니다.

기기에 사용 설정된 관리자 앱이 여러 개 있는 경우 가장 엄격한 정책은 다음과 같습니다. 시행됩니다 특정 관리자를 타겟팅할 수 있는 방법이 없음 있습니다.

기존 기기 관리자 앱을 제거하려면 사용자가 다음 작업을 수행해야 합니다. 관리자 권한으로 앱을 등록 취소해야 합니다.

정책

기업 환경에서는 직원 기기가 기기 사용에 적용되는 엄격한 정책을 준수해야 합니다. 이 Device Administration API는 표 1에 나열된 정책을 지원합니다. Device Administration API는 현재 화면의 비밀번호만 지원합니다. 잠금:

표 1. Device Administration API에서 지원하는 정책

정책 설명
비밀번호 사용 설정 기기에서 PIN 또는 비밀번호를 요청해야 합니다.
비밀번호 최소 길이 비밀번호에 필요한 문자 수를 설정합니다. 예를 들어 에는 최소 6자 이상의 PIN 또는 비밀번호를 요구할 수 있습니다.
비밀번호에 영숫자 필요 비밀번호에는 문자와 숫자의 조합입니다. 기호 문자를 포함할 수 있습니다.
복잡한 비밀번호 필요 비밀번호에는 최소한 하나의 문자, 숫자 및 특수 기호가 포함되어야 합니다. Android 3.0에서 도입되었습니다.
비밀번호에 필요한 최소 문자 수 이 모든 관리자 또는 특정 관리자의 비밀번호에 필요한 문자가 포함되어 있습니다. Android 3.0에서 도입되었습니다.
비밀번호에 필요한 최소 소문자 수 소문자의 최소 개수입니다. 모든 관리자 또는 특정 관리자의 비밀번호에 필요한 문자가 포함되어 있습니다. Android 3.0에서 도입되었습니다.
비밀번호에 필요한 최소 비문자 수 이 모든 관리자 또는 특정 관리자의 비밀번호에 글자가 아닌 문자가 필요합니다. Android 3.0에서 도입되었습니다.
비밀번호에 필요한 최소 숫자 수 모든 관리자 또는 특정 관리자의 비밀번호에 필요한 숫자의 최소 개수입니다. Android 3.0에서 도입되었습니다.
비밀번호에 필요한 최소 기호 수 모든 관리자 또는 특정 관리자의 비밀번호에 필요한 최소 기호 개수입니다. Android 3.0에서 도입되었습니다.
비밀번호에 필요한 최소 대문자 수 모든 관리자 또는 특정 관리자의 비밀번호에 필요한 최소 대문자 개수입니다. Android 3.0에서 도입되었습니다.
비밀번호 만료 시간 제한 비밀번호가 만료되면 기기 관리자가 만료 시간 제한을 설정한 때부터 밀리초 단위의 델타로 표시됩니다. Android 3.0에서 도입되었습니다.
비밀번호 기록 제한 이 정책은 사용자가 마지막 n 개의 고유 비밀번호를 다시 사용하지 못하게 합니다. 이 정책은 일반적으로 setPasswordExpirationTimeout()는 비밀번호를 업데이트하도록 요청할 수 있습니다. Android 3.0에서 도입되었습니다.
잘못된 비밀번호 입력을 시도할 수 있는 최대 횟수 사용자가 잘못된 비밀번호를 입력할 수 있는 횟수를 기기에서 데이터를 완전히 삭제하는 경우 관리자는 Device Administration API를 사용하여 다음을 수행할 수도 있습니다. 원격으로 기기를 초기화할 수 있습니다. 이렇게 하면 기기를 분실하거나 도난당한 경우
최대 비활성 상태 시간 잠금 사용자가 마지막으로 화면을 터치한 후 경과된 시간을 설정합니다. 버튼을 누른 경우. 이 경우 사용자는 PIN 또는 비밀번호를 다시 입력해야 기기를 사용할 수 있으며 데이터에 액세스할 수 있습니다 값은 1분에서 60분 사이가 될 수 있습니다.
저장소 암호화 필요 기기가 지원한다면 저장소 영역을 암호화하도록 지정합니다. Android 3.0에서 도입되었습니다.
카메라 사용 중지 카메라를 중지하도록 지정합니다. 이 작업은 영구적으로 사용 중지될 수 있습니다 카메라를 동적으로 사용 설정/중지할 수 있습니다. 기반으로 합니다. Android 4.0에서 도입되었습니다.

기타 기능

위의 표에 나열된 정책을 지원할 뿐만 아니라 Administration API를 사용하면 다음 작업을 할 수 있습니다.

  • 사용자에게 새 비밀번호를 설정하라는 메시지 표시
  • 즉시 기기 잠금
  • 기기 데이터를 완전히 삭제(즉, 기기를 출고 시 기본값으로 복원함)

샘플 앱

이 페이지에서 사용된 예시는 Device Administration API를 기반으로 합니다. 샘플에 대해 자세히 알아보려면 SDK 샘플( Android SDK Manager)에서 찾을 수 있으며, <sdk_root>/ApiDemos/app/src/main/java/com/example/android/apis/app/DeviceAdminSample.java

샘플 앱은 기기 관리자 기능의 데모를 제공합니다. 사용자에게 기기 관리자 앱을 사용 설정할 수 있는 사용자 인터페이스를 제공합니다. 한 번 사용자가 앱을 사용 설정했다면 사용자 인터페이스의 버튼을 사용하여 다음 작업을 수행합니다.

  • 비밀번호 품질 설정
  • 사용자 비밀번호에 대한 요구사항 지정(예: 최소 길이, 최소 비밀번호 포함해야 하는 숫자 문자 등입니다.
  • 비밀번호 설정. 비밀번호가 지정된 시스템에서 오류를 반환합니다.
  • 기기 초기화 전 허용되는 비밀번호 오류 횟수 설정 (즉, 기본 설정으로 복원됨)
  • 지금부터 비밀번호가 만료될 때까지 남은 시간 설정
  • 비밀번호 기록 길이 설정(길이는 기록에 저장할 이전 비밀번호의 개수). 이렇게 하면 사용자가 이전에 사용한 마지막 n개의 비밀번호 중 하나
  • 기기가 지원하는 경우 저장소 영역을 암호화하도록 지정
  • 기기가 시작되기 전에 경과할 수 있는 최대 비활성 시간 설정 있습니다.
  • 기기를 즉시 잠금
  • 기기의 데이터를 완전히 삭제(즉, 초기화함)
  • 카메라 중지

그림 1. 샘플 앱 스크린샷

기기 관리자 앱 개발

시스템 관리자는 Device Administration API를 사용하여 앱을 작성할 수 있습니다. 원격/로컬 기기 보안 정책 시행을 적용합니다. 이 섹션 에는 장치 관리 생성과 관련된 단계가 요약되어 있습니다. 있습니다.

매니페스트 생성

Device Administration API를 사용하려면 앱의 매니페스트에는 다음이 포함되어야 합니다.

다음은 기기 관리자 샘플 manifest에서 발췌한 내용입니다.

<activity android:name=".app.DeviceAdminSample"
            android:label="@string/activity_sample_device_admin">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.SAMPLE_CODE" />
    </intent-filter>
</activity>
<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver"
        android:label="@string/sample_device_admin"
        android:description="@string/sample_device_admin_description"
        android:permission="android.permission.BIND_DEVICE_ADMIN">
    <meta-data android:name="android.app.device_admin"
            android:resource="@xml/device_admin_sample" />
    <intent-filter>
        <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
    </intent-filter>
</receiver>

참고:

  • 다음 속성은 샘플 앱이 상주하는 문자열 리소스를 ApiDemos/res/values/strings.xml 리소스에 대한 자세한 내용은 애플리케이션 리소스.
    • android:label="@string/activity_sample_device_admin"는 액티비티에 대해 사용자가 읽을 수 있는 레이블입니다.
    • android:label="@string/sample_device_admin"는 권한에 대한 사용자가 읽을 수 있는 라벨입니다.
    • android:description="@string/sample_device_admin_description"는 다음을 나타냅니다. 사용자가 읽을 수 있는 권한 설명입니다. 설명은 일반적으로 더 길고 더 많은 정보를 제공하는 라벨을 지정합니다
  • android:permission="android.permission.BIND_DEVICE_ADMIN" DeviceAdminReceiver 서브클래스가 갖춰야 하는 권한입니다. 해야 합니다. 이 다른 앱에서 기기 관리자 앱을 악용하는 것을 방지합니다.
  • android.app.action.DEVICE_ADMIN_ENABLED이(가) 기본 DeviceAdminReceiver 서브클래스가 처리해야 하는 작업 기기를 관리할 수 있는 권한을 부여하는 데 사용됩니다. 사용자가 사용 설정하면 수신자로 설정됩니다. 기기 관리자 앱을 엽니다. 코드는 일반적으로 onEnabled() 지원을 받으려면 수신기도 BIND_DEVICE_ADMIN 권한이 있어야 다른 앱이 악용해서는 안 됩니다.
  • 사용자가 기기 관리자 앱을 사용 설정하면 수신기가 특정 시스템의 브로드캐스트에 대한 응답으로 작업을 수행할 수 있는 권한 이벤트를 수신합니다. 적절한 이벤트가 발생하면 앱에서 정책을 시행할 수 있습니다. 대상 예: 사용자가 정책을 준수하지 않는 새 비밀번호를 설정하려고 시도하는 경우 요구사항에 따라 앱은 다른 비밀번호를 선택하라는 메시지를 사용자에게 표시할 수 있습니다. 확인해야 합니다
  • 앱을 게시한 후에는 수신자 이름을 변경하지 마세요. 만약 사용자가 앱을 업데이트할 때 기기 관리자가 사용 중지됩니다. 자세한 내용은 <receiver>
  • android:resource="@xml/device_admin_sample" 메타데이터에 사용되는 보안 정책을 선언합니다. 메타데이터는 DeviceAdminInfo 클래스에서 파싱한 기기 관리자 관련 정보입니다. 다음은 device_admin_sample.xml:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-policies>
    <limit-password />
    <watch-login />
    <reset-password />
    <force-lock />
    <wipe-data />
    <expire-password />
    <encrypted-storage />
    <disable-camera />
  </uses-policies>
</device-admin>

기기 관리 앱을 설계할 때 앱과 관련된 정책만 포함합니다.

매니페스트 파일에 관한 자세한 내용은 Android 개발자 가이드를 참고하세요.

코드 구현

Device Administration API에는 다음 클래스가 포함됩니다.

DeviceAdminReceiver
기기 관리자 구성요소를 구현하기 위한 기본 클래스입니다. 이 클래스는 API 호출로 전송된 원시 인텐트 작업을 있습니다. 기기 관리 앱에는 DeviceAdminReceiver 서브클래스.
DevicePolicyManager
기기에서 시행되는 정책을 관리하는 클래스입니다. 대부분의 클라이언트들은 이 클래스는 사용자가 게시 중단한 DeviceAdminReceiver 이(가) 현재 사용 설정되어 있습니다. DevicePolicyManager는 하나 이상의 DeviceAdminReceiver 인스턴스
DeviceAdminInfo
이 클래스는 메타데이터를 지정하는 데 사용됩니다. 구성 요소가 있습니다.

이러한 클래스는 모든 기능을 갖춘 기기 관리 앱의 기반을 제공합니다. 이 섹션의 나머지 부분에서는 DeviceAdminReceiver 및 기기 관리자 앱을 작성하는 DevicePolicyManager API

DeviceAdminReceiver 서브클래스 만들기

기기 관리자 앱을 만들려면 서브클래스를 만들어야 합니다. DeviceAdminReceiver DeviceAdminReceiver 클래스 특정 이벤트 발생 시 트리거되는 일련의 콜백으로 구성됩니다. 발생할 수 있습니다

DeviceAdminReceiver 서브클래스에서 샘플 앱은 단순히 특정 응답의 응답으로 Toast 알림을 표시합니다. 이벤트를 수신합니다. 예를 들면 다음과 같습니다.

Kotlin

class DeviceAdminSample : DeviceAdminReceiver() {

    private fun showToast(context: Context, msg: String) {
        context.getString(R.string.admin_receiver_status, msg).let { status ->
            Toast.makeText(context, status, Toast.LENGTH_SHORT).show()
        }
    }

    override fun onEnabled(context: Context, intent: Intent) =
            showToast(context, context.getString(R.string.admin_receiver_status_enabled))

    override fun onDisableRequested(context: Context, intent: Intent): CharSequence =
            context.getString(R.string.admin_receiver_status_disable_warning)

    override fun onDisabled(context: Context, intent: Intent) =
            showToast(context, context.getString(R.string.admin_receiver_status_disabled))

    override fun onPasswordChanged(context: Context, intent: Intent, userHandle: UserHandle) =
            showToast(context, context.getString(R.string.admin_receiver_status_pw_changed))
...
}

자바

public class DeviceAdminSample extends DeviceAdminReceiver {

    void showToast(Context context, String msg) {
        String status = context.getString(R.string.admin_receiver_status, msg);
        Toast.makeText(context, status, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onEnabled(Context context, Intent intent) {
        showToast(context, context.getString(R.string.admin_receiver_status_enabled));
    }

    @Override
    public CharSequence onDisableRequested(Context context, Intent intent) {
        return context.getString(R.string.admin_receiver_status_disable_warning);
    }

    @Override
    public void onDisabled(Context context, Intent intent) {
        showToast(context, context.getString(R.string.admin_receiver_status_disabled));
    }

    @Override
    public void onPasswordChanged(Context context, Intent intent, UserHandle userHandle) {
        showToast(context, context.getString(R.string.admin_receiver_status_pw_changed));
    }
...
}

앱 사용 설정

기기 관리자 앱이 처리해야 하는 주요 이벤트 중 하나는 앱을 사용 설정합니다. 사용자는 다음을 위해 앱을 명시적으로 사용 설정해야 합니다. 정책을 정의하는 데 사용됩니다 사용자가 앱을 사용 설정하지 않는 경우 기기에 계속 존재하지만 정책은 시행되지 않으며 사용자는 앱의 혜택을 누릴 수 있습니다.

앱을 사용 설정하는 프로세스는 사용자가 ACTION_ADD_DEVICE_ADMIN를 트리거하는 작업 인텐트를 지정할 수 있습니다. 샘플 앱의 경우 사용자가 앱의 오른쪽 상단에 있는 사용 설정 관리 체크박스를 선택합니다.

사용자가 관리자 사용 설정 체크박스를 클릭하면 그림과 같이 사용자에게 기기 관리자 앱을 활성화하라는 메시지를 표시하도록 변경 2.

그림 2. 샘플 앱: 앱 활성화

다음은 사용자가 관리자 사용 설정 체크박스를 클릭할 때 실행되는 코드입니다. 이렇게 하면 onPreferenceChange() 있습니다. 사용자가 이 Preference의 값을 변경하고 이 값이 곧 설정 또는 유지될 때 이 콜백이 호출됩니다. 사용자가 앱을 사용 설정하는 경우 화면은 그림과 같이 사용자에게 기기 관리자 앱을 활성화하라는 메시지를 표시하도록 변경 2. 활성화하지 않으면 기기 관리자 앱이 중지됩니다.

Kotlin

override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean {
    if (super.onPreferenceChange(preference, newValue)) return true
    val value = newValue as Boolean
    if (preference == enableCheckbox) {
        if (value != adminActive) {
            if (value) {
                // Launch the activity to have the user enable our admin.
                val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN).apply {
                    putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminSample)
                    putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                            activity.getString(R.string.add_admin_extra_app_text))
                }
                startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN)
                // return false - don't update checkbox until we're really active
                return false
            } else {
                dpm.removeActiveAdmin(deviceAdminSample)
                enableDeviceCapabilitiesArea(false)
                adminActive = false
            }
        }
    } else if (preference == disableCameraCheckbox) {
        dpm.setCameraDisabled(deviceAdminSample, value)
    }
    return true
}

자바

@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
    if (super.onPreferenceChange(preference, newValue)) {
        return true;
    }
    boolean value = (Boolean) newValue;
    if (preference == enableCheckbox) {
        if (value != adminActive) {
            if (value) {
                // Launch the activity to have the user enable our admin.
                Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminSample);
                intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                        activity.getString(R.string.add_admin_extra_app_text));
                startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
                // return false - don't update checkbox until we're really active
                return false;
            } else {
                dpm.removeActiveAdmin(deviceAdminSample);
                enableDeviceCapabilitiesArea(false);
                adminActive = false;
            }
        }
    } else if (preference == disableCameraCheckbox) {
        dpm.setCameraDisabled(deviceAdminSample, value);
    }
    return true;
}

라인 intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample)mDeviceAdminSample( DeviceAdminReceiver 구성요소)가 대상 정책입니다. 이 줄은 그림 2에 표시된 사용자 인터페이스를 호출하여 사용자에게 시스템에 기기 관리자를 추가 (또는 관리자가 거부하도록 허용)

앱이 기기 관리자 앱이 사용 설정되고 있으면 앱이 활성화됨. 이를 위해 DevicePolicyManager 메서드를 사용합니다. isAdminActive()입니다. DevicePolicyManager isAdminActive() 메서드가 DeviceAdminReceiver를 가져옴 구성요소를 인수로 사용합니다.

Kotlin

private lateinit var dpm: DevicePolicyManager
...
private fun isActiveAdmin(): Boolean = dpm.isAdminActive(deviceAdminSample)

자바

DevicePolicyManager dpm;
...
private boolean isActiveAdmin() {
    return dpm.isAdminActive(deviceAdminSample);
}

정책 관리

DevicePolicyManager는 정책 관리를 위한 공개 클래스입니다. 적용됩니다 DevicePolicyManager에서 단일 계정의 정책을 관리함 DeviceAdminReceiver 인스턴스 이상

다음과 같이 DevicePolicyManager에 관한 핸들을 가져옵니다.

Kotlin

dpm = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager

자바

DevicePolicyManager dpm =
    (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);

이 섹션에서는 DevicePolicyManager를 사용하여 관리 작업:

비밀번호 정책 설정

DevicePolicyManager에는 기기 비밀번호 정책 Device Administration API에서 비밀번호는 화면 잠금을 탭합니다. 이 섹션에서는 비밀번호와 관련된 일반적인 작업을 설명합니다.

기기의 비밀번호 설정

이 코드는 사용자에게 비밀번호를 설정하도록 메시지를 표시하는 사용자 인터페이스를 표시합니다.

Kotlin

Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD).also { intent ->
    startActivity(intent)
}

자바

Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
startActivity(intent);
비밀번호 품질 설정

비밀번호 품질은 다음 DevicePolicyManager 상수 중 하나가 될 수 있습니다.

PASSWORD_QUALITY_ALPHABETIC
사용자는 영문자 (또는 기타 기호) 이상이 포함된 비밀번호
PASSWORD_QUALITY_ALPHANUMERIC
사용자는 적어도 숫자 영문자를 모두 포함하는 비밀번호 (또는 기타 기호) 문자를 포함할 수 없습니다.
PASSWORD_QUALITY_NUMERIC
사용자는 비밀번호를 입력해야 합니다. 포함되어야 합니다.
PASSWORD_QUALITY_COMPLEX
사용자 최소한 하나의 문자, 숫자 및 특수 기호로 사용합니다.
PASSWORD_QUALITY_SOMETHING
정책에는 일종의 그것이 뭔지 상관하지 않습니다.
PASSWORD_QUALITY_UNSPECIFIED
정책에는 비밀번호에 대한 요구사항이 없습니다.

예를 들어, 아래 코드는 영숫자 비밀번호를 요구하는 비밀번호 정책을 설정하는 방법입니다.

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
...
dpm.setPasswordQuality(deviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC)

자바

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
dpm.setPasswordQuality(deviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);
비밀번호 콘텐츠 요구사항 설정

Android 3.0부터 DevicePolicyManager 클래스 에는 비밀번호의 내용을 미세 조정할 수 있는 메서드가 포함되어 있습니다. 대상 예를 들어 비밀번호에는 최소 n 대문자 비밀번호에 대한 사용자 인증 정보를 콘텐츠:

예를 들어, 이 스니펫은 비밀번호에 최소한 2개 이상의 대문자가 있어야 하는 것을 나타냅니다.

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwMinUppercase = 2
...
dpm.setPasswordMinimumUpperCase(deviceAdminSample, pwMinUppercase)

자바

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int pwMinUppercase = 2;
...
dpm.setPasswordMinimumUpperCase(deviceAdminSample, pwMinUppercase);
비밀번호의 최소 길이 설정

비밀번호가 지정된 최솟값 이상이어야 한다고 지정할 수 있습니다. 지정할 수 있습니다. 예를 들면 다음과 같습니다.

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwLength: Int = ...
...
dpm.setPasswordMinimumLength(deviceAdminSample, pwLength)

자바

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int pwLength;
...
dpm.setPasswordMinimumLength(deviceAdminSample, pwLength);
잘못된 비밀번호를 시도할 수 있는 최대 횟수 설정

허용되는 최대 비밀번호 입력 횟수를 초기화 (즉, 초기화됨)인지 확인합니다. 예를 들면 다음과 같습니다.

Kotlin

val dPM:DevicePolicyManager
private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val maxFailedPw: Int = ...
...
dpm.setMaximumFailedPasswordsForWipe(deviceAdminSample, maxFailedPw)

자바

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int maxFailedPw;
 ...
dpm.setMaximumFailedPasswordsForWipe(deviceAdminSample, maxFailedPw);
비밀번호 만료 시간 제한 설정

Android 3.0부터는 setPasswordExpirationTimeout() 메서드로, 기기 관리자가 만료 시간 제한을 설정한 시점부터 밀리초 단위의 델타로 표시됩니다. 예를 들면 다음과 같습니다.

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwExpiration: Long = ...
...
dpm.setPasswordExpirationTimeout(deviceAdminSample, pwExpiration)

자바

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
long pwExpiration;
...
dpm.setPasswordExpirationTimeout(deviceAdminSample, pwExpiration);
기록에 따라 비밀번호 제한

Android 3.0부터는 setPasswordHistoryLength() 사용자의 액세스 권한을 제한하는 방법을 이전 비밀번호를 재사용할 수 있는 기능 이 메서드는 길이를 취합니다. 이 매개변수는 비밀번호 저장 이 정책이 활성화되면 사용자가 새 마지막 n개의 비밀번호와 일치하는 비밀번호 이렇게 하면 같은 비밀번호를 반복해서 사용하는 것을 방지할 수 있습니다. 이 정책은 일반적으로 관련: setPasswordExpirationTimeout(), 사용자는 이 정책을 통해 지정된 시간이 지나면 비밀번호를 업데이트할 수 있습니다.

예를 들어, 이 스니펫은 사용자가 마지막 5개의 비밀번호를 재사용하지 못하도록 합니다.

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwHistoryLength = 5
...
dpm.setPasswordHistoryLength(deviceAdminSample, pwHistoryLength)

자바

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int pwHistoryLength = 5;
...
dpm.setPasswordHistoryLength(deviceAdminSample, pwHistoryLength);

기기 잠금 설정

기기 잠금. 예를 들면 다음과 같습니다.

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val timeMs: Long = 1000L * timeout.text.toString().toLong()
...
dpm.setMaximumTimeToLock(deviceAdminSample, timeMs)

자바

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
long timeMs = 1000L*Long.parseLong(timeout.getText().toString());
dpm.setMaximumTimeToLock(deviceAdminSample, timeMs);

프로그래밍 방식으로 기기를 잠그도록 기기에 즉시 알릴 수도 있습니다.

Kotlin

private lateinit var dpm: DevicePolicyManager
dpm.lockNow()

자바

DevicePolicyManager dpm;
dpm.lockNow();

데이터 초기화 실행

DevicePolicyManager 메서드를 사용하면 됩니다. wipeData()하여 기기를 초기화합니다. 유용함 기기를 분실하거나 도난당한 경우 보통 기기를 초기화하는 것은 특정 조건 충족의 결과일 수 있습니다 예를 들어 setMaximumFailedPasswordsForWipe(): 기기가 비밀번호 시도에 특정 횟수만큼 실패하면 초기화됩니다.

다음과 같이 데이터를 완전히 삭제합니다.

Kotlin

private lateinit var dpm: DevicePolicyManager
dpm.wipeData(0)

자바

DevicePolicyManager dpm;
dpm.wipeData(0);

wipeData() 메서드는 매개변수는 추가 옵션의 비트 마스크입니다. 현재 값은 0이어야 합니다.

카메라 중지

Android 4.0부터 카메라를 중지할 수 있습니다. 참고로, 영구적으로 중지해야 하는 것은 아닙니다. 카메라는 컨텍스트, 시간 등을 기준으로 동적으로 사용 설정 또는 중지될 수 있습니다.

카메라를 사용 중지할지 여부는 setCameraDisabled() 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다. 예를 들어, 이 스니펫은 체크박스 설정에 따라 카메라를 사용 또는 중지로 설정합니다.

Kotlin

private lateinit var disableCameraCheckbox: CheckBoxPreference
private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
...
dpm.setCameraDisabled(deviceAdminSample, mDisableCameraCheckbox.isChecked)

자바

private CheckBoxPreference disableCameraCheckbox;
DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
dpm.setCameraDisabled(deviceAdminSample, mDisableCameraCheckbox.isChecked());

저장소 암호화

Android 3.0부터는 setStorageEncryption() 메서드를 사용하여 저장소 영역의 암호화를 요구하는 정책을 설정할 수 있습니다(지원되는 경우).

예를 들면 다음과 같습니다.

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
...
dpm.setStorageEncryption(deviceAdminSample, true)

자바

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
dpm.setStorageEncryption(deviceAdminSample, true);

저장소 암호화를 사용 설정하는 방법에 관한 전체 예는 Device Administration API 샘플을 참고하세요.

추가 코드 샘플

Android AppRestrictionEnforcerDeviceOwner 샘플은 이 페이지에서 다룬 API의 사용을 더 자세히 보여줍니다.