Do not change NFC on/off preference while executing SE reset.
Bug: 4967769
Change-Id: I7a72cbe831d4b3f44bed7feeea8abaf468cdc19b
Signed-off-by: Nick Pelly <npelly@google.com>
diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java
index 0095761..283d72d 100755
--- a/src/com/android/nfc/NfcService.java
+++ b/src/com/android/nfc/NfcService.java
@@ -338,7 +338,7 @@
public void run() {
boolean nfc_on = mPrefs.getBoolean(PREF_NFC_ON, NFC_ON_DEFAULT);
if (nfc_on) {
- _enable(false);
+ _enable(false, true);
}
resetSeOnFirstBoot();
}
@@ -365,7 +365,7 @@
boolean previouslyEnabled = isEnabled();
if (!previouslyEnabled) {
reset();
- isSuccess = _enable(previouslyEnabled);
+ isSuccess = _enable(previouslyEnabled, true);
}
return isSuccess;
}
@@ -378,7 +378,7 @@
if (DBG) Log.d(TAG, "Disabling NFC. previous=" + previouslyEnabled);
if (previouslyEnabled) {
- isSuccess = _disable(previouslyEnabled);
+ isSuccess = _disable(previouslyEnabled, true);
}
return isSuccess;
}
@@ -1918,7 +1918,7 @@
}
}
- private boolean _enable(boolean oldEnabledState) {
+ private boolean _enable(boolean oldEnabledState, boolean savePref) {
applyProperties();
boolean isSuccess = mManager.initialize();
@@ -1937,12 +1937,14 @@
mIsNfcEnabled = false;
}
- updateNfcOnSetting(oldEnabledState);
+ if (savePref) {
+ updateNfcOnSetting(oldEnabledState);
+ }
return isSuccess;
}
- private boolean _disable(boolean oldEnabledState) {
+ private boolean _disable(boolean oldEnabledState, boolean savePref) {
/* sometimes mManager.deinitialize() hangs, watch-dog it */
WatchDogThread watchDog = new WatchDogThread();
watchDog.start();
@@ -1972,7 +1974,9 @@
mNdefPushClient.setForegroundMessage(null);
}
- updateNfcOnSetting(oldEnabledState);
+ if (savePref) {
+ updateNfcOnSetting(oldEnabledState);
+ }
watchDog.cancel();
return isSuccess;
@@ -2087,7 +2091,7 @@
boolean tempEnable = !mIsNfcEnabled;
if (tempEnable) {
- if (!_enable(false)) {
+ if (!_enable(false, false)) {
Log.w(TAG, "Could not enable NFC to reset EE!");
return;
}
@@ -2098,7 +2102,7 @@
if (handle == 0) {
Log.e(TAG, "Could not open the secure element!");
if (tempEnable) {
- _disable(true);
+ _disable(true, false);
}
return;
}
@@ -2114,7 +2118,7 @@
mSecureElement.doDisconnect(handle);
if (tempEnable) {
- _disable(true);
+ _disable(true, false);
}
}