वर्क प्रोफ़ाइल का पता लगाना

इस गाइड में, किसी डिवाइस पर वर्क प्रोफ़ाइल का पता लगाने का तरीका बताया गया है. यह सिर्फ़ उन वर्क प्रोफ़ाइल पर लागू होता है जिन्हें Android डिवाइस पॉलिसी ऐप्लिकेशन से मैनेज किया जाता है.

यह पता लगाना कि ऐप्लिकेशन, वर्क प्रोफ़ाइल में चल रहा है या नहीं

इस तरीके से यह जांच की जाती है कि कॉल करने वाला ऐप्लिकेशन, Android Device Policy ऐप्लिकेशन से मैनेज की जाने वाली वर्क प्रोफ़ाइल में चल रहा है या नहीं.

KotlinJava
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 ऐप्लिकेशन से मैनेज की जाने वाली वर्क प्रोफ़ाइल है या नहीं, यह तरीका अपनाएं. इसे किसी भी मैनेजमेंट मोड से कॉल किया जा सकता है. अगर Android डिवाइस पॉलिसी ऐप्लिकेशन से मैनेज की जाने वाली वर्क प्रोफ़ाइल मौजूद है, तो निजी प्रोफ़ाइल में मौजूद किसी ऐप्लिकेशन से, इंटेंट com.google.android.apps.work.clouddpc.ACTION_DETECT_WORK_PROFILE के लिए क्वेरी करने पर, उसे क्रॉस-प्रोफ़ाइल इंटेंट के तौर पर हल किया जाना चाहिए. यह तरीका सिर्फ़ तब true दिखाएगा, जब इसे ऐसे डिवाइस की निजी प्रोफ़ाइल से कॉल किया जाएगा जिस पर ऐसी वर्क प्रोफ़ाइल मौजूद है.

Android 11 और उसके बाद के वर्शन:

KotlinJava
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 से पहले:

KotlinJava
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");
            });
}