Prompt to turn on/unlock profile before showing account sync settings

Bug: 29087280
Change-Id: I39e175ab23d4f1071727fe9c0906e40da1e7aada
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index a37039f..dd62c6f 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -25,6 +25,7 @@
 import android.app.Dialog;
 import android.app.Fragment;
 import android.app.IActivityManager;
+import android.app.KeyguardManager;
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
 import android.content.ContentResolver;
@@ -49,8 +50,6 @@
 import android.net.Uri;
 import android.os.BatteryManager;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
 import android.os.IBinder;
 import android.os.INetworkManagementService;
 import android.os.Looper;
@@ -92,6 +91,7 @@
 import com.android.internal.app.UnlaunchableAppActivity;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.UserIcons;
+import com.android.internal.widget.LockPatternUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -1129,6 +1129,30 @@
         return false;
     }
 
+    public static boolean unlockWorkProfileIfNecessary(Context context, int userId) {
+        try {
+            if (!ActivityManagerNative.getDefault().isUserRunning(userId,
+                    ActivityManager.FLAG_AND_LOCKED)) {
+                return false;
+            }
+        } catch (RemoteException e) {
+            return false;
+        }
+        if (!(new LockPatternUtils(context)).isSecure(userId)) {
+            return false;
+        }
+        final KeyguardManager km = (KeyguardManager) context.getSystemService(
+                Context.KEYGUARD_SERVICE);
+        final Intent unlockIntent = km.createConfirmDeviceCredentialIntent(null, null, userId);
+        if (unlockIntent != null) {
+            context.startActivity(unlockIntent);
+            return true;
+        } else {
+            return false;
+        }
+
+    }
+
     public static CharSequence getApplicationLabel(Context context, String packageName) {
         try {
             final ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(