İş profili algılama

Bu kılavuzda, bir cihazda iş profilinin nasıl algılanacağı açıklanmaktadır. Yalnızca Android Device Policy uygulaması tarafından yönetilen iş profilleri için geçerlidir.

Uygulamanın iş profilinde çalışıp çalışmadığını algılama

Aşağıdaki yöntem, arama uygulamasının Android Device Policy uygulaması tarafından yönetilen bir iş profilinde çalışıp çalışmadığını kontrol eder.

Kotlin

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

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

Java

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

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

Cihazda iş profili olup olmadığını algılama

Bir cihazda Android Device Policy uygulaması tarafından yönetilen iş profili olup olmadığını belirlemek için aşağıdaki yöntemi kullanın. Bu işlev herhangi bir yönetim modundan çağrılabilir. Kişisel profildeki bir uygulamadan, com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE amaç sorgusu, Android Device Policy uygulaması tarafından yönetilen bir iş profili varsa profiller arası amaç olarak çözümlenmelidir. Bu yöntem, yalnızca böyle bir iş profiline sahip bir cihazın kişisel profilinden çağrıldığında true değerini döndürür.

Android 11 ve sonraki sürümler:

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 }
}

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.isCrossProfileIntentForwarderActivity();
            });
}

Android 11'den önceki sürümlerde:

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