diff options
author | Scott Warner <Tortel1210@gmail.com> | 2015-01-25 14:04:53 -0500 |
---|---|---|
committer | Scott Warner <Tortel1210@gmail.com> | 2015-01-25 16:24:45 -0500 |
commit | 9b335980bf0bf230ab5c2ba6b1504247b99c28ed (patch) | |
tree | de20b43304c43eb88ede94c347c5bd798d9542cc | |
parent | a182008a0e3c6f85eef4e4b7d09f5bb94a2a9c56 (diff) | |
download | android_packages_apps_Bluetooth-9b335980bf0bf230ab5c2ba6b1504247b99c28ed.tar.gz android_packages_apps_Bluetooth-9b335980bf0bf230ab5c2ba6b1504247b99c28ed.tar.bz2 android_packages_apps_Bluetooth-9b335980bf0bf230ab5c2ba6b1504247b99c28ed.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
-rwxr-xr-x | 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 1af9deca3..d5ec82f6b 100755 --- a/src/com/android/bluetooth/btservice/AdapterService.java +++ b/src/com/android/bluetooth/btservice/AdapterService.java @@ -1768,7 +1768,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) { |