직장 프로필 감지

이 가이드에서는 기기에서 직장 프로필을 감지하는 방법을 설명합니다. Android Device Policy 앱으로 관리되는 직장 프로필에만 적용됩니다.

앱이 직장 프로필 내에서 실행 중인지 감지

다음 메서드는 호출 앱이 Android Device Policy 앱에서 관리하는 직장 프로필 내에서 실행되고 있는지 확인합니다.

Kotlin

fun isInsideWorkProfile(): Boolean {
  val devicePolicyManager = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager

  return devicePolicyManager.isProfileOwnerApp("com.google.android.apps.work.clouddpc")
}

자바

boolean isInsideWorkProfile() {
  DevicePolicyManager devicePolicyManager = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);

  return devicePolicyManager.isProfileOwnerApp("com.google.android.apps.work.clouddpc");
}

기기에 직장 프로필이 있는지 감지

기기에 Android Device Policy 앱으로 관리되는 직장 프로필이 있는지 확인하려면 다음 방법을 사용하세요. 이 메서드는 모든 관리 모드에서 호출할 수 있습니다. 개인 프로필의 앱에서 com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE 인텐트를 쿼리하면 Android Device Policy 앱으로 관리되는 직장 프로필이 있는 경우 교차 프로필 인텐트로 확인되어야 합니다. 이 메서드는 이러한 직장 프로필이 있는 기기의 개인 프로필에서 호출된 경우에만 true를 반환합니다.

Android 11 이상:

Kotlin

fun hasWorkProfile(): Boolean {
  val intent = Intent("com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE")
  val activities = context.packageManager.queryIntentActivities(intent, 0)
  return activities.any { it.isCrossProfileIntentForwarderActivity }
}

자바

boolean hasWorkProfile() {
  Intent intent = new Intent("com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE");
  List<ResolveInfo> activities = context.getPackageManager().queryIntentActivities(intent, 0);
  return activities.stream()
        .anyMatch(
            (ResolveInfo resolveInfo) -> {
              return resolveInfo.isCrossProfileIntentForwarderActivity();
            });
}

Android 11 이전:

Kotlin

fun hasWorkProfile(): Boolean {
  val intent = Intent("com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE")
  val activities = context.packageManager.queryIntentActivities(intent, 0)
  return activities.any { it.activityInfo.name == "com.android.internal.app.ForwardIntentToManagedProfile" }
}

Java

boolean hasWorkProfile() {
  Intent intent = new Intent("com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE");
  List<ResolveInfo> activities = context.getPackageManager().queryIntentActivities(intent, 0);
  return activities.stream()
        .anyMatch(
            (ResolveInfo resolveInfo) -> {
              return resolveInfo.activityInfo.name.equals("com.android.internal.app.ForwardIntentToManagedProfile");
            });
}