summaryrefslogtreecommitdiffstats
path: root/packages/SettingsLib/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SettingsLib/src')
-rwxr-xr-xpackages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java6
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java4
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java4
-rwxr-xr-xpackages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java5
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java34
5 files changed, 39 insertions, 14 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java
index d3e7104..9a2f71c 100755
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java
@@ -348,8 +348,12 @@ public final class BluetoothEventManager {
Log.e(TAG, "ACTION_PAIRING_CANCEL with no EXTRA_DEVICE");
return;
}
- int errorMsg = R.string.bluetooth_pairing_error_message;
CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(device);
+ if (cachedDevice == null) {
+ Log.e(TAG, "ACTION_PAIRING_CANCEL with no cached device");
+ return;
+ }
+ int errorMsg = R.string.bluetooth_pairing_error_message;
Utils.showError(context, cachedDevice.getName(), errorMsg);
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index 7534b8e..b0429ef 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -807,7 +807,9 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
if (BluetoothUuid.containsAnyUuid(uuids, PbapServerProfile.PBAB_CLIENT_UUIDS)) {
// The pairing dialog now warns of phone-book access for paired devices.
// No separate prompt is displayed after pairing.
- setPhonebookPermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED);
+ if (getPhonebookPermissionChoice() == CachedBluetoothDevice.ACCESS_UNKNOWN) {
+ setPhonebookPermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED);
+ }
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java
index e3d2a99..0380e21 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java
@@ -217,4 +217,8 @@ public final class LocalBluetoothAdapter {
syncBluetoothState();
}
}
+
+ public BluetoothDevice getRemoteDevice(String address) {
+ return mAdapter.getRemoteDevice(address);
+ }
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java
index 3af89e6..7bda231 100755
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java
@@ -32,7 +32,7 @@ import java.util.List;
/**
* PanProfile handles Bluetooth PAN profile (NAP and PANU).
*/
-final class PanProfile implements LocalBluetoothProfile {
+public final class PanProfile implements LocalBluetoothProfile {
private static final String TAG = "PanProfile";
private static boolean V = true;
@@ -106,8 +106,7 @@ final class PanProfile implements LocalBluetoothProfile {
}
public boolean isPreferred(BluetoothDevice device) {
- // return current connection status so profile checkbox is set correctly
- return getConnectionStatus(device) == BluetoothProfile.STATE_CONNECTED;
+ return true;
}
public int getPreferred(BluetoothDevice device) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
index 68803b3..09c93e9 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
@@ -205,7 +205,9 @@ public class WifiTracker {
* Gets the current list of access points.
*/
public List<AccessPoint> getAccessPoints() {
- return mAccessPoints;
+ synchronized (mAccessPoints) {
+ return new ArrayList<>(mAccessPoints);
+ }
}
public WifiManager getManager() {
@@ -230,14 +232,14 @@ public class WifiTracker {
public void dump(PrintWriter pw) {
pw.println(" - wifi tracker ------");
- for (AccessPoint accessPoint : mAccessPoints) {
+ for (AccessPoint accessPoint : getAccessPoints()) {
pw.println(" " + accessPoint);
}
}
private void updateAccessPoints() {
// Swap the current access points into a cached list.
- ArrayList<AccessPoint> cachedAccessPoints = new ArrayList<>(mAccessPoints);
+ List<AccessPoint> cachedAccessPoints = getAccessPoints();
ArrayList<AccessPoint> accessPoints = new ArrayList<>();
// Clear out the configs so we don't think something is saved when it isn't.
@@ -330,7 +332,7 @@ public class WifiTracker {
mMainHandler.sendEmptyMessage(MainHandler.MSG_ACCESS_POINT_CHANGED);
}
- private AccessPoint getCachedOrCreate(ScanResult result, ArrayList<AccessPoint> cache) {
+ private AccessPoint getCachedOrCreate(ScanResult result, List<AccessPoint> cache) {
final int N = cache.size();
for (int i = 0; i < N; i++) {
if (cache.get(i).matches(result)) {
@@ -342,7 +344,7 @@ public class WifiTracker {
return new AccessPoint(mContext, result);
}
- private AccessPoint getCachedOrCreate(WifiConfiguration config, ArrayList<AccessPoint> cache) {
+ private AccessPoint getCachedOrCreate(WifiConfiguration config, List<AccessPoint> cache) {
final int N = cache.size();
for (int i = 0; i < N; i++) {
if (cache.get(i).matches(config)) {
@@ -357,15 +359,15 @@ public class WifiTracker {
private void updateNetworkInfo(NetworkInfo networkInfo) {
/* sticky broadcasts can call this when wifi is disabled */
if (!mWifiManager.isWifiEnabled()) {
- mScanner.pause();
+ mMainHandler.sendEmptyMessage(MainHandler.MSG_PAUSE_SCANNING);
return;
}
if (networkInfo != null &&
networkInfo.getDetailedState() == DetailedState.OBTAINING_IPADDR) {
- mScanner.pause();
+ mMainHandler.sendEmptyMessage(MainHandler.MSG_PAUSE_SCANNING);
} else {
- mScanner.resume();
+ mMainHandler.sendEmptyMessage(MainHandler.MSG_RESUME_SCANNING);
}
mLastInfo = mWifiManager.getConnectionInfo();
@@ -380,7 +382,9 @@ public class WifiTracker {
}
}
if (reorder) {
- Collections.sort(mAccessPoints);
+ synchronized (mAccessPoints) {
+ Collections.sort(mAccessPoints);
+ }
mMainHandler.sendEmptyMessage(MainHandler.MSG_ACCESS_POINT_CHANGED);
}
}
@@ -442,6 +446,8 @@ public class WifiTracker {
private static final int MSG_CONNECTED_CHANGED = 0;
private static final int MSG_WIFI_STATE_CHANGED = 1;
private static final int MSG_ACCESS_POINT_CHANGED = 2;
+ private static final int MSG_RESUME_SCANNING = 3;
+ private static final int MSG_PAUSE_SCANNING = 4;
public MainHandler(Looper looper) {
super(looper);
@@ -462,6 +468,16 @@ public class WifiTracker {
case MSG_ACCESS_POINT_CHANGED:
mListener.onAccessPointsChanged();
break;
+ case MSG_RESUME_SCANNING:
+ if (mScanner != null) {
+ mScanner.resume();
+ }
+ break;
+ case MSG_PAUSE_SCANNING:
+ if (mScanner != null) {
+ mScanner.pause();
+ }
+ break;
}
}
}