การตรวจหาโปรไฟล์งาน

คู่มือนี้แสดงวิธีตรวจหาโปรไฟล์งานในอุปกรณ์ โดยจะมีผลเฉพาะ กับโปรไฟล์งานที่จัดการโดยแอป Android Device Policy

ตรวจหาว่าแอปทำงานภายในโปรไฟล์งานหรือไม่

วิธีต่อไปนี้จะตรวจสอบว่าแอปการโทรทำงานภายในโปรไฟล์งานที่แอป 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");
}

ตรวจหาว่าอุปกรณ์มีโปรไฟล์งานหรือไม่

หากต้องการดูว่าอุปกรณ์มีโปรไฟล์งานที่จัดการโดยแอป Android Device Policy หรือไม่ ให้ใช้วิธีต่อไปนี้ ซึ่งเรียกใช้ได้จากโหมดการจัดการใดก็ได้ จากแอปในโปรไฟล์ส่วนตัว การค้นหา Intent com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE ควร แสดงเป็น Intent ข้ามโปรไฟล์หากมีโปรไฟล์งานที่จัดการโดยแอป Android Device Policy เมธอดนี้จะแสดงผล true เมื่อเรียกใช้จากโปรไฟล์ส่วนตัวของอุปกรณ์ที่มีโปรไฟล์งานดังกล่าวเท่านั้น

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.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();
            });
}

ก่อน 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");
            });
}