İş profili algılama

Bu kılavuzda, cihazlarda iş profillerinin nasıl algılanacağı gösterilmektedir. Yalnızca Android Device Policy uygulaması tarafından yönetilen iş profilleri için geçerlidir.

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

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

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

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

Bir cihazda Android Device Policy uygulaması tarafından yönetilen bir 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. Android Device Policy uygulaması tarafından yönetilen bir iş profili varsa kişisel profildeki bir uygulamadan com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE intent'i için sorgu yapmak, profiller arası bir intent olarak çözülmelidir. Bu yöntem yalnızca böyle bir iş profiline sahip bir cihazın kişisel profilinden çağrıldığında true döndürür.

Android 11 ve sonraki sürümler:

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.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'den önceki sürümler:

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