diff options
Diffstat (limited to 'packages/SettingsLib/src')
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; } } } |
