diff options
| author | 2016-01-30 12:49:41 -0500 | |
|---|---|---|
| committer | 2016-01-30 12:49:41 -0500 | |
| commit | c17d3298255357ce6e49d889cb4548e33004344c (patch) | |
| tree | 435ed286150256e8988f3f249de6e18257ec5274 | |
| parent | 650e3b70e4aa2fa9acf2f9c6ce211c4b46862c15 (diff) | |
Fix rare crash in bt detail panel
Since bond state is gotten directly from the bluetooth stack it is
possible it could change, and therefore change the number of devices
if pairing happens while the detail panel is updating. Fix this by
just dropping them into a list.
Bug: 26258223
Change-Id: I7703520391798fd7c9ab097b0057b7b43b877212
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java index dbb7423f6e56..874fc3ec0b88 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java @@ -34,6 +34,7 @@ import com.android.systemui.qs.QSDetailItems.Item; import com.android.systemui.qs.QSTile; import com.android.systemui.statusbar.policy.BluetoothController; +import java.util.ArrayList; import java.util.Collection; /** Quick settings tile: Bluetooth **/ @@ -217,11 +218,9 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { private void updateItems() { if (mItems == null) return; - Item[] items = null; + ArrayList<Item> items = new ArrayList<Item>(); final Collection<CachedBluetoothDevice> devices = mController.getDevices(); if (devices != null) { - items = new Item[getBondedCount(devices)]; - int i = 0; for (CachedBluetoothDevice device : devices) { if (device.getBondState() == BluetoothDevice.BOND_NONE) continue; final Item item = new Item(); @@ -237,20 +236,10 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> { item.line2 = mContext.getString(R.string.quick_settings_connecting); } item.tag = device; - items[i++] = item; + items.add(item); } } - mItems.setItems(items); - } - - private int getBondedCount(Collection<CachedBluetoothDevice> devices) { - int ct = 0; - for (CachedBluetoothDevice device : devices) { - if (device.getBondState() != BluetoothDevice.BOND_NONE) { - ct++; - } - } - return ct; + mItems.setItems(items.toArray(new Item[items.size()])); } @Override |