직장 프로필 감지

이 가이드에서는 기기에서 직장 프로필을 감지하는 방법을 설명합니다. 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 앱에서 관리하는 직장 프로필이 있는지 확인하려면 다음 메서드를 사용하세요. 이 메서드는 모든 관리 모드에서 호출할 수 있습니다. Android Device Policy 앱에서 관리하는 직장 프로필이 있는 경우 개인 프로필의 앱에서 com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE 인텐트를 쿼리하면 교차 프로필 인텐트로 확인됩니다. 이 메서드는 이러한 직장 프로필이 있는 기기의 개인 프로필에서 호출된 경우에만 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 이전:

KotlinJava
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" }
}
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");
            });
}