Panduan ini menggambarkan cara mendeteksi profil kerja di perangkat. Hal ini hanya berlaku untuk profil kerja yang dikelola oleh aplikasi kebijakan Perangkat Android.
Mendeteksi apakah aplikasi berjalan di dalam profil kerja
Metode berikut memeriksa apakah aplikasi panggilan berjalan dalam profil kerja yang dikelola oleh aplikasi 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");
}
Mendeteksi apakah perangkat memiliki profil kerja
Untuk menentukan apakah perangkat memiliki profil kerja yang dikelola oleh aplikasi Android Device Policy, gunakan metode berikut. 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
harus
di-resolve sebagai intent lintas profil jika ada profil kerja yang dikelola oleh aplikasi
Android Device Policy. Metode ini hanya akan menampilkan true
saat dipanggil dari
profil pribadi perangkat yang memiliki profil kerja tersebut.
Android 11 dan yang lebih baru:
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();
});
}
Sebelum Android 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");
});
}