Questa guida illustra come rilevare un profilo di lavoro su un dispositivo. Si applica solo ai profili di lavoro gestiti dall'app Android Device Policy.
Rileva se l'app è in esecuzione in un profilo di lavoro
Il seguente metodo controlla se l'app chiamante è in esecuzione in un profilo di lavoro gestito dall'app 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")
}
Java
boolean isInsideWorkProfile() {
DevicePolicyManager devicePolicyManager = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
return devicePolicyManager.isProfileOwnerApp("com.google.android.apps.work.clouddpc");
}
Rileva se il dispositivo ha un profilo di lavoro
Per determinare se un dispositivo ha un profilo di lavoro gestito dall'app Android Device Policy, utilizza il seguente metodo. Questo comando può essere chiamato da qualsiasi modalità di gestione. Da
un'app nel profilo personale, la query per l'intent
com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE
dovrebbe essere risolta come intent tra profili se esiste un profilo di lavoro gestito dall'app Android Device Policy. Questo metodo restituirà true
solo se viene chiamato dal profilo personale di un dispositivo con un profilo di lavoro di questo tipo.
Android 11 e versioni successive:
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 }
}
Java
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();
});
}
Prima di 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" }
}
Java
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");
});
}