Hướng dẫn này minh hoạ cách phát hiện hồ sơ công việc trên thiết bị. Chế độ này chỉ áp dụng cho các hồ sơ công việc do ứng dụng Android Device Policy quản lý.
Phát hiện xem ứng dụng có đang chạy trong hồ sơ công việc hay không
Phương thức sau đây sẽ kiểm tra xem ứng dụng gọi có đang chạy trong hồ sơ công việc do ứng dụng Android Device Policy quản lý hay không.
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");
}
Phát hiện xem thiết bị có hồ sơ công việc hay không
Để xác định xem một thiết bị có hồ sơ công việc do ứng dụng Android Device Policy quản lý hay không, hãy sử dụng phương thức sau. Bạn có thể gọi phương thức này từ bất kỳ chế độ quản lý nào. Từ một ứng dụng trong hồ sơ cá nhân, việc truy vấn ý định com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE
sẽ phân giải dưới dạng ý định trên nhiều hồ sơ nếu có hồ sơ công việc do ứng dụng Android Device Policy quản lý. Phương thức này sẽ chỉ trả về true
khi được gọi từ hồ sơ cá nhân của một thiết bị có hồ sơ công việc như vậy.
Android 11 trở lên:
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();
});
}
Trước 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");
});
}