diff options
author | Scott Warner <Tortel1210@gmail.com> | 2015-01-25 14:04:53 -0500 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-03-14 23:47:22 -0700 |
commit | d9fcea76e8af1135128bea4f7c74309c23ad92c7 (patch) | |
tree | 4dba5cb74514ece63b15f5e37571239175bdf1ff | |
parent | 24c74241fc14ade7635b96cf5a6d2a8a4d39cc64 (diff) | |
download | android_packages_apps_Bluetooth-d9fcea76e8af1135128bea4f7c74309c23ad92c7.tar.gz android_packages_apps_Bluetooth-d9fcea76e8af1135128bea4f7c74309c23ad92c7.tar.bz2 android_packages_apps_Bluetooth-d9fcea76e8af1135128bea4f7c74309c23ad92c7.zip |
Handle change from boolean to int preference
Commit 02bf7ae9826a355db8614d1aad4f04bb5d6509ab changed the type of the
phonebook access preference from boolean to int, which throws a
ClassCastException and disconnects from the device.
This changes the preference type from a boolean to an integer if this
would happen
Change-Id: I37bc1f4eec52cd05a04d370bfcecb473c0eff374
-rw-r--r-- | src/com/android/bluetooth/btservice/AdapterService.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/com/android/bluetooth/btservice/AdapterService.java b/src/com/android/bluetooth/btservice/AdapterService.java index aaafd2f85..54d883c82 100644 --- a/src/com/android/bluetooth/btservice/AdapterService.java +++ b/src/com/android/bluetooth/btservice/AdapterService.java @@ -1837,7 +1837,21 @@ public class AdapterService extends Service { if (!pref.contains(device.getAddress())) { return BluetoothDevice.ACCESS_UNKNOWN; } - return pref.getInt(device.getAddress(), BluetoothDevice.ACCESS_UNKNOWN); + try { + return pref.getInt(device.getAddress(), BluetoothDevice.ACCESS_UNKNOWN); + } catch (ClassCastException e) { + // Handle and change old boolean preferences to the int-based values + boolean currentPref = pref.getBoolean(device.getAddress(), false); + int newPref = currentPref ? + BluetoothDevice.ACCESS_ALLOWED : BluetoothDevice.ACCESS_REJECTED; + + SharedPreferences.Editor editor = pref.edit(); + editor.putInt(device.getAddress(), newPref); + if (editor.commit()) { + return newPref; + } + return BluetoothDevice.ACCESS_UNKNOWN; + } } boolean setPhonebookAccessPermission(BluetoothDevice device, int value) { |