Merge "Fix Work Challenge / personal confirm credential is shown on top of keyguard after rotation" into nyc-dev

am: eb02435cbf

* commit 'eb02435cbf06335dc641a20a9c244323f7567710':
  Fix Work Challenge / personal confirm credential is shown on top of keyguard after rotation

Change-Id: I179673366395df90dcef132d17599282ee4d191c
This commit is contained in:
Victor Chang
2016-05-26 11:13:40 +00:00
committed by android-build-merger

View File

@@ -18,19 +18,20 @@ package com.android.settings;
import android.app.Fragment; import android.app.Fragment;
import android.app.KeyguardManager; import android.app.KeyguardManager;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.UserManager; import android.os.UserManager;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.WindowManager; import android.view.WindowManager;
public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivity { public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivity {
private static final String STATE_IS_KEYGUARD_LOCKED = "STATE_IS_KEYGUARD_LOCKED";
private boolean mRestoring; private boolean mRestoring;
private boolean mDark; private boolean mDark;
private boolean mEnterAnimationPending; private boolean mEnterAnimationPending;
private boolean mFirstTimeVisible = true; private boolean mFirstTimeVisible = true;
private boolean mIsKeyguardLocked = false;
@Override @Override
protected void onCreate(Bundle savedState) { protected void onCreate(Bundle savedState) {
@@ -44,8 +45,15 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
mDark = true; mDark = true;
} }
super.onCreate(savedState); super.onCreate(savedState);
boolean deviceLocked = getSystemService(KeyguardManager.class).isKeyguardLocked(); mIsKeyguardLocked = savedState == null
if (deviceLocked && getIntent().getBooleanExtra( ? getSystemService(KeyguardManager.class).isKeyguardLocked()
: savedState.getBoolean(STATE_IS_KEYGUARD_LOCKED, false);
// If the activity is launched, not due to config change, when keyguard is locked and the
// flag is set, assume it's launched on top of keyguard on purpose.
// TODO: Don't abuse SHOW_WHEN_LOCKED and don't check isKeyguardLocked.
// Set extra SHOW_WHEN_LOCKED and WindowManager FLAG_SHOW_WHEN_LOCKED only if it's
// truly on top of keyguard on purpose
if (mIsKeyguardLocked && getIntent().getBooleanExtra(
ConfirmDeviceCredentialBaseFragment.SHOW_WHEN_LOCKED, false)) { ConfirmDeviceCredentialBaseFragment.SHOW_WHEN_LOCKED, false)) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
} }
@@ -59,6 +67,12 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
mRestoring = savedState != null; mRestoring = savedState != null;
} }
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(STATE_IS_KEYGUARD_LOCKED, mIsKeyguardLocked);
}
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) { if (item.getItemId() == android.R.id.home) {