summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/SecuritySettings.java
diff options
context:
space:
mode:
authorJim Miller <jaggies@google.com>2014-09-05 18:48:18 -0700
committerJim Miller <jaggies@google.com>2014-09-07 14:30:38 -0700
commit250b9bee685de8f4060dd410f0894c22de1909cf (patch)
treef2059b5e2adf271053b452cb3bfbc0203e4614b6 /src/com/android/settings/SecuritySettings.java
parentfd3a3d79290799ec80c3bc9cfe965280428a8077 (diff)
downloadpackages_apps_Settings-250b9bee685de8f4060dd410f0894c22de1909cf.zip
packages_apps_Settings-250b9bee685de8f4060dd410f0894c22de1909cf.tar.gz
packages_apps_Settings-250b9bee685de8f4060dd410f0894c22de1909cf.tar.bz2
Fix problem where rotating the device doesn't launch TrustAgent pref
This fixes a bug where the TrustAgent intent was being lost when the device configurtion changes. It used to depend on a view that gets recreated. Instead, we persist the actual launch intent which works across activity restarts. Fixes bug 17040470 Change-Id: Ia1c93867254cfdc27683a767cf41fe74dbb97db0
Diffstat (limited to 'src/com/android/settings/SecuritySettings.java')
-rw-r--r--src/com/android/settings/SecuritySettings.java34
1 files changed, 23 insertions, 11 deletions
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 7798937..46a3c8e 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -63,6 +63,7 @@ import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
*/
public class SecuritySettings extends SettingsPreferenceFragment
implements OnPreferenceChangeListener, DialogInterface.OnClickListener, Indexable {
+ private static final String TRUST_AGENT_CLICK_INTENT = "trust_agent_click_intent";
static final String TAG = "SecuritySettings";
private static final Intent TRUST_AGENT_INTENT =
new Intent(TrustAgentService.SERVICE_INTERFACE);
@@ -127,7 +128,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
private boolean mIsPrimary;
- private Preference mClickedTrustAgentPreference;
+ private Intent mTrustAgentClickIntent;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -138,6 +139,11 @@ public class SecuritySettings extends SettingsPreferenceFragment
mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity());
+
+ if (savedInstanceState != null
+ && savedInstanceState.containsKey(TRUST_AGENT_CLICK_INTENT)) {
+ mTrustAgentClickIntent = savedInstanceState.getParcelable(TRUST_AGENT_CLICK_INTENT);
+ }
}
private static int getResIdForLockUnlockScreen(Context context,
@@ -505,6 +511,14 @@ public class SecuritySettings extends SettingsPreferenceFragment
}
@Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ if (mTrustAgentClickIntent != null) {
+ outState.putParcelable(TRUST_AGENT_CLICK_INTENT, mTrustAgentClickIntent);
+ }
+ }
+
+ @Override
public void onResume() {
super.onResume();
@@ -554,12 +568,12 @@ public class SecuritySettings extends SettingsPreferenceFragment
} else if (KEY_TRUST_AGENT.equals(key)) {
ChooseLockSettingsHelper helper =
new ChooseLockSettingsHelper(this.getActivity(), this);
- mClickedTrustAgentPreference = preference;
+ mTrustAgentClickIntent = preference.getIntent();
if (!helper.launchConfirmationActivity(CHANGE_TRUST_AGENT_SETTINGS, null, null) &&
- preference.getIntent() != null) {
+ mTrustAgentClickIntent != null) {
// If this returns false, it means no password confirmation is required.
- startActivity(preference.getIntent());
- mClickedTrustAgentPreference = null;
+ startActivity(mTrustAgentClickIntent);
+ mTrustAgentClickIntent = null;
}
} else {
// If we didn't handle it, let preferences handle it.
@@ -587,13 +601,11 @@ public class SecuritySettings extends SettingsPreferenceFragment
// because mBiometricWeakLiveliness could be null
return;
} else if (requestCode == CHANGE_TRUST_AGENT_SETTINGS && resultCode == Activity.RESULT_OK) {
- if (mClickedTrustAgentPreference != null) {
- Intent intent = mClickedTrustAgentPreference.getIntent();
- if (intent != null) {
- startActivity(intent);
- }
- mClickedTrustAgentPreference = null;
+ if (mTrustAgentClickIntent != null) {
+ startActivity(mTrustAgentClickIntent);
+ mTrustAgentClickIntent = null;
}
+ return;
}
createPreferenceHierarchy();
}