Merge "Fix memory leak in Bluetooth settings"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e177112..648bd2b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1687,6 +1687,8 @@
<string name="wifi_wps_failed_auth">Authentication failure. Please try again.</string>
<!-- Text displayed when WPS fails due to another session [CHAR LIMIT=150] -->
<string name="wifi_wps_failed_overlap">Another WPS session was detected. Please try again in a few minutes.</string>
+ <!-- Text displayed when WPS fails due to wifi disconnected [CHAR LIMIT=150] -->
+ <string name="wifi_wps_failed_wifi_disconnected">Wi\u2011Fi disconnected. WPS setup canceled.</string>
<!-- Label for the SSID of the network -->
<string name="wifi_ssid">Network name</string>
<!-- Hint for a text field to enter the SSID of a hidden wifi network. [CHAR LIMIT=35] -->
diff --git a/src/com/android/settings/applications/AppStateAppOpsBridge.java b/src/com/android/settings/applications/AppStateAppOpsBridge.java
old mode 100644
new mode 100755
index cfbb2fc..c74699f
--- a/src/com/android/settings/applications/AppStateAppOpsBridge.java
+++ b/src/com/android/settings/applications/AppStateAppOpsBridge.java
@@ -187,7 +187,11 @@
* PermissionState, which describes a particular package.
*/
private void loadPermissionsStates(SparseArray<ArrayMap<String, PermissionState>> entries) {
- // Load the packages that have been granted the permission specified in mPermission.
+ // Load the packages that have been granted the permission specified in mPermission.
+ if (entries == null) {
+ return;
+ }
+
try {
for (final UserHandle profile : mProfiles) {
final int profileId = profile.getIdentifier();
diff --git a/src/com/android/settings/datausage/BillingCycleSettings.java b/src/com/android/settings/datausage/BillingCycleSettings.java
index d755a7b..e6c09fd 100644
--- a/src/com/android/settings/datausage/BillingCycleSettings.java
+++ b/src/com/android/settings/datausage/BillingCycleSettings.java
@@ -275,7 +275,7 @@
Spinner spinner = (Spinner) mView.findViewById(R.id.size_spinner);
String bytesString = bytesField.getText().toString();
- if (bytesString.isEmpty()) {
+ if (bytesString.isEmpty() || bytesString.equals(".")) {
bytesString = "0";
}
final long bytes = (long) (Float.valueOf(bytesString)
diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
index b414627..8689530 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
@@ -33,6 +33,7 @@
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
import android.os.UserHandle;
+import android.text.TextUtils;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.AnimationUtils;
@@ -264,7 +265,10 @@
@Override
public void onEnrollmentHelp(CharSequence helpString) {
- mErrorText.setText(helpString);
+ if (!TextUtils.isEmpty(helpString)) {
+ mErrorText.removeCallbacks(mTouchAgainRunnable);
+ showError(helpString);
+ }
}
@Override
diff --git a/src/com/android/settings/sim/SimPreferenceDialog.java b/src/com/android/settings/sim/SimPreferenceDialog.java
index 530cb38..d195724 100644
--- a/src/com/android/settings/sim/SimPreferenceDialog.java
+++ b/src/com/android/settings/sim/SimPreferenceDialog.java
@@ -167,7 +167,6 @@
mSubInfoRecord.setIconTint(tint);
mSubscriptionManager.setIconTint(tint, subscriptionId);
dialog.dismiss();
- finish();
}
});
@@ -175,10 +174,16 @@
@Override
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
- finish();
}
});
+ mBuilder.setOnDismissListener(new DialogInterface.OnDismissListener() {
+ @Override
+ public void onDismiss(DialogInterface dialogInListener) {
+ finish();
+ }
+ });
+
mBuilder.create().show();
}
diff --git a/src/com/android/settings/wifi/WpsDialog.java b/src/com/android/settings/wifi/WpsDialog.java
index 3de2729..440b72d 100644
--- a/src/com/android/settings/wifi/WpsDialog.java
+++ b/src/com/android/settings/wifi/WpsDialog.java
@@ -125,6 +125,7 @@
mFilter = new IntentFilter();
+ mFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
mReceiver = new BroadcastReceiver() {
@Override
@@ -261,7 +262,18 @@
private void handleEvent(Context context, Intent intent) {
String action = intent.getAction();
- if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
+ if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
+ final int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
+ WifiManager.WIFI_STATE_UNKNOWN);
+ if (state == WifiManager.WIFI_STATE_DISABLED) {
+ if (mTimer != null) {
+ mTimer.cancel();
+ mTimer = null;
+ }
+ String msg = mContext.getString(R.string.wifi_wps_failed_wifi_disconnected);
+ updateDialog(DialogState.WPS_FAILED, msg);
+ }
+ } else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
NetworkInfo info = (NetworkInfo) intent.getParcelableExtra(
WifiManager.EXTRA_NETWORK_INFO);
final NetworkInfo.DetailedState state = info.getDetailedState();