Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 95089be4 authored by Rubin Xu's avatar Rubin Xu Committed by Android (Google) Code Review
Browse files

Merge "Prompt to turn on/unlock profile before showing account sync settings" into nyc-mr1-dev

parents 6030f64a 3231afe9
Loading
Loading
Loading
Loading
+26 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.app.AppGlobals;
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.LinkProperties;
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 android.widget.TabWidget;
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 @@ public final class Utils extends com.android.settingslib.Utils {
        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(
+8 −0
Original line number Diff line number Diff line
@@ -554,6 +554,14 @@ public class AccountSettings extends SettingsPreferenceFragment
        @Override
        public boolean onPreferenceClick(Preference preference) {
            if (mFragment != null) {
                UserHandle user = mFragmentArguments.getParcelable(EXTRA_USER);
                if (user != null && Utils.startQuietModeDialogIfNecessary(getContext(), mUm,
                        user.getIdentifier())) {
                    return true;
                } else if (user != null && Utils.unlockWorkProfileIfNecessary(getContext(),
                        user.getIdentifier())) {
                    return true;
                }
                Utils.startWithFragment(getContext(), mFragment, mFragmentArguments,
                        null /* resultTo */, 0 /* resultRequestCode */, mTitleResPackageName,
                        mTitleResId, null /* title */);