رصد ملف العمل

يوضّح هذا الدليل كيفية رصد ملف عمل على جهاز. وينطبق ذلك فقط على ملفات العمل التي يديرها تطبيق "سياسة أمان Android".

رصد ما إذا كان التطبيق يعمل داخل ملف عمل

تتحقّق الطريقة التالية مما إذا كان تطبيق الاتصال يعمل ضمن ملف عمل تتم إدارته من خلال تطبيق 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، استخدِم الطريقة التالية. يمكن استدعاء هذه الطريقة من أي وضع إدارة. من تطبيق في الملف الشخصي الشخصي، يجب أن يتم حل طلب البحث عن الغرض com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE كغرض متعدد الملفات الشخصية إذا كان هناك ملف عمل مُدار بواسطة تطبيق Android Device Policy. لن تعرض هذه الطريقة سوى 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:

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

جافا

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