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