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.
Rilevare se l'app è in esecuzione all'interno di un profilo di lavoro
Il seguente metodo verifica se l'app chiamante è in esecuzione all'interno di 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");
}
Rilevare 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. 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 deve essere risolta come un intent tra profili se esiste un profilo di lavoro gestito dall'app Android Device Policy. Questo metodo restituirà true solo se chiamato dal profilo personale di un dispositivo che ha 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");
});
}