Prompt to turn on/unlock profile before showing account sync settings am: 3231afe95b am: e1237c8096

am: cc2861ab56

Change-Id: I7b594a3064991241626249301fff35370887ee25
This commit is contained in:
Rubin Xu
2016-09-01 10:55:18 +00:00
committed by android-build-merger
2 changed files with 34 additions and 2 deletions

View File

@@ -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(

View File

@@ -548,6 +548,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 */);