Ten przewodnik pokazuje, jak wykryć profil służbowy na urządzeniu. Dotyczy to tylko profili służbowych zarządzanych przez aplikację Android Device Policy.
wykryć, czy aplikacja działa w profilu służbowym;
Podana niżej metoda sprawdza, czy wywołująca aplikacja działa w profilu służbowym zarządzanym przez aplikację Android Device Policy.
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");
}
Sprawdzanie, czy urządzenie ma profil służbowy
Aby sprawdzić, czy urządzenie ma profil służbowy zarządzany przez aplikację Android Device Policy, użyj tej metody. Funkcję tę można wywołać z dowolnego trybu zarządzania. Jeśli na profilu osobistym aplikacja wysyła zapytanie o intencję com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE
, powinna ona zostać rozwiązana jako intencja na różnych profilach, jeśli istnieje profil służbowy zarządzany przez aplikację Android Device Policy. Ta metoda zwróci wartość true
tylko wtedy, gdy zostanie wywołana z profilu osobowego urządzenia, które ma taki profil służbowy.
Android 11 i nowsze:
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();
});
}
Przed Androidem 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");
});
}