คู่มือนี้จะแสดงวิธีตรวจหาโปรไฟล์งานในอุปกรณ์ โดยจะมีผลกับโปรไฟล์งานที่มีการจัดการโดยแอปนโยบายอุปกรณ์ Android เท่านั้น
ตรวจจับว่าแอปทำงานอยู่ในโปรไฟล์งานหรือไม่
วิธีการต่อไปนี้จะตรวจสอบว่าแอปการโทรทำงานอยู่ในโปรไฟล์งานซึ่งจัดการโดยแอป 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");
}
ตรวจหาว่าอุปกรณ์มีโปรไฟล์งานหรือไม่
หากต้องการตรวจสอบว่าอุปกรณ์มีโปรไฟล์งานซึ่งจัดการโดยแอป Android Device Policy หรือไม่ ให้ใช้วิธีการต่อไปนี้ ซึ่งเรียกได้จากโหมดการจัดการใดก็ได้ จากแอปในโปรไฟล์ส่วนตัว การค้นหา Intent com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE
ควรได้รับการแก้ไขเป็น Intent แบบข้ามโปรไฟล์หากมีโปรไฟล์งานที่แอป Android Device Policy จัดการอยู่ เมธอดนี้จะแสดงผล true
เฉพาะเมื่อเรียกจากโปรไฟล์ส่วนตัวของอุปกรณ์ที่มีโปรไฟล์งานดังกล่าว
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.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();
});
}
ก่อน 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");
});
}