summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Warner <Tortel1210@gmail.com>2015-01-25 14:04:53 -0500
committerScott Warner <Tortel1210@gmail.com>2015-01-25 16:24:45 -0500
commit9b335980bf0bf230ab5c2ba6b1504247b99c28ed (patch)
treede20b43304c43eb88ede94c347c5bd798d9542cc
parenta182008a0e3c6f85eef4e4b7d09f5bb94a2a9c56 (diff)
downloadandroid_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-xsrc/com/android/bluetooth/btservice/AdapterService.java16
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) {