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

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

تشخیص اینکه آیا برنامه در داخل یک پروفایل کاری اجرا می‌شود یا خیر

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

کاتلین

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 را برمی‌گرداند که از پروفایل شخصی دستگاهی که چنین پروفایل کاری دارد فراخوانی شود.

اندروید ۱۱ و بالاتر:

کاتلین

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

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

کاتلین

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