Este guia mostra como detectar um perfil de trabalho em um dispositivo. Ela se aplica apenas a perfis de trabalho gerenciados pelo app Android Device Policy.
Detectar se o app está sendo executado em um perfil de trabalho
O método abaixo verifica se o app de chamada está sendo executado em um perfil de trabalho gerenciado pelo 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");
}
Detectar se o dispositivo tem um perfil de trabalho
Para determinar se um dispositivo tem um perfil de trabalho gerenciado pelo app Android Device Policy, use o método a seguir. Isso pode ser chamado em qualquer modo de gerenciamento. Em
um app no perfil pessoal, a consulta da intent
com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE será
resolvida como uma intent entre perfis se houver um perfil de trabalho gerenciado pelo app
Android Device Policy. Esse método só vai retornar true quando for chamado do perfil pessoal de um dispositivo que tenha um perfil de trabalho.
Android 11 e versões mais recentes:
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();
});
}
Antes do 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");
});
}