تشخیص نمایه کاری، تشخیص نمایه کاری

این راهنما نحوه تشخیص نمایه کاری در دستگاه را نشان می دهد. این فقط برای نمایه های کاری که توسط برنامه خط مشی دستگاه Android مدیریت می شود اعمال می شود.

تشخیص دهید که آیا برنامه در نمایه کاری در حال اجرا است یا خیر

روش زیر بررسی می‌کند که آیا برنامه تماس در نمایه کاری مدیریت شده توسط برنامه سیاست دستگاه Android اجرا می‌شود یا خیر.

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 مدیریت می‌شود، از یک برنامه در نمایه شخصی ، درخواست intent com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE باید به عنوان یک هدف بین نمایه حل شود. این روش تنها زمانی true برمی گردد که از نمایه شخصی دستگاهی که چنین نمایه کاری دارد فراخوانی شود.

اندروید 11 به بعد:

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

قبل از اندروید 11:

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