Panduan ini menggambarkan cara mendeteksi profil kerja di perangkat. Setelan ini hanya berlaku untuk profil kerja yang dikelola oleh aplikasi Android Device Policy.
Mendeteksi apakah aplikasi berjalan di dalam profil kerja
Metode berikut memeriksa apakah aplikasi yang memanggil berjalan dalam profil kerja yang dikelola oleh aplikasi 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");
}
Mendeteksi apakah perangkat memiliki profil kerja
Untuk menentukan apakah perangkat memiliki profil kerja yang dikelola oleh aplikasi Android Device Policy, gunakan metode berikut. Tindakan ini dapat dipanggil dari mode pengelolaan apa pun. Dari
aplikasi di profil pribadi, kueri untuk intent
com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE akan
diselesaikan sebagai intent lintas profil jika ada profil kerja yang dikelola oleh aplikasi Android
Device Policy. Metode ini hanya akan menampilkan true jika dipanggil dari
profil pribadi perangkat yang memiliki profil kerja tersebut.
Android 11 dan yang lebih baru:
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();
});
}
Sebelum 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");
});
}