From 393ba3c690f5063bcbdb4bc63f564d6d019765a9 Mon Sep 17 00:00:00 2001 From: Hemant Gupta Date: Wed, 4 Nov 2015 16:38:15 +0530 Subject: Bluetooth: PBAP: Add support for PBAP UI preference This pach adds support for PBAP UI preference in SettingsLib. Without this change it is not possible to properly use the pbap checkbox preference from Bluetooth subsettings menu. Also some map profile specific bug fixes are also incorporated in this change. Change-Id: I4981aa063b2541b58ce1d36e3576578cbeb02acc CRs-Fixed: 758697 --- .../settings/bluetooth/DeviceProfilesSettings.java | 33 +++++++++++++--------- 1 file changed, 19 insertions(+), 14 deletions(-) mode change 100755 => 100644 src/com/android/settings/bluetooth/DeviceProfilesSettings.java (limited to 'src/com') diff --git a/src/com/android/settings/bluetooth/DeviceProfilesSettings.java b/src/com/android/settings/bluetooth/DeviceProfilesSettings.java old mode 100755 new mode 100644 index b7d837b..abee8cc --- a/src/com/android/settings/bluetooth/DeviceProfilesSettings.java +++ b/src/com/android/settings/bluetooth/DeviceProfilesSettings.java @@ -174,11 +174,16 @@ public final class DeviceProfilesSettings extends DialogFragment implements private void addPreferencesForProfiles() { mProfileContainer.removeAllViews(); for (LocalBluetoothProfile profile : mCachedDevice.getConnectableProfiles()) { - CheckBox pref = createProfilePreference(profile); - mProfileContainer.addView(pref); + // MAP and PBAP profiles would be added based on permission access + if (!((profile instanceof PbapServerProfile) || + (profile instanceof MapProfile))) { + CheckBox pref = createProfilePreference(profile); + mProfileContainer.addView(pref); + } } final int pbapPermission = mCachedDevice.getPhonebookPermissionChoice(); + Log.d(TAG, "addPreferencesForProfiles: pbapPermission = " + pbapPermission); // Only provide PBAP cabability if the client device has requested PBAP. if (pbapPermission != CachedBluetoothDevice.ACCESS_UNKNOWN) { final PbapServerProfile psp = mManager.getProfileManager().getPbapProfile(); @@ -188,6 +193,7 @@ public final class DeviceProfilesSettings extends DialogFragment implements final MapProfile mapProfile = mManager.getProfileManager().getMapProfile(); final int mapPermission = mCachedDevice.getMessagePermissionChoice(); + Log.d(TAG, "addPreferencesForProfiles: mapPermission = " + mapPermission); if (mapPermission != CachedBluetoothDevice.ACCESS_UNKNOWN) { CheckBox mapPreference = createProfilePreference(mapProfile); mProfileContainer.addView(mapPreference); @@ -242,15 +248,6 @@ public final class DeviceProfilesSettings extends DialogFragment implements private void onProfileClicked(LocalBluetoothProfile profile, CheckBox profilePref) { BluetoothDevice device = mCachedDevice.getDevice(); - if (KEY_PBAP_SERVER.equals(profilePref.getTag())) { - final int newPermission = mCachedDevice.getPhonebookPermissionChoice() - == CachedBluetoothDevice.ACCESS_ALLOWED ? CachedBluetoothDevice.ACCESS_REJECTED - : CachedBluetoothDevice.ACCESS_ALLOWED; - mCachedDevice.setPhonebookPermissionChoice(newPermission); - profilePref.setChecked(newPermission == CachedBluetoothDevice.ACCESS_ALLOWED); - return; - } - if (!profilePref.isChecked()) { // Recheck it, until the dialog is done. profilePref.setChecked(true); @@ -259,6 +256,11 @@ public final class DeviceProfilesSettings extends DialogFragment implements if (profile instanceof MapProfile) { mCachedDevice.setMessagePermissionChoice(BluetoothDevice.ACCESS_ALLOWED); } + if (profile instanceof PbapServerProfile) { + mCachedDevice.setPhonebookPermissionChoice(BluetoothDevice.ACCESS_ALLOWED); + refreshProfilePreference(profilePref, profile); + return; + } if (profile.isPreferred(device)) { // profile is preferred but not connected: disable auto-connect if (profile instanceof PanProfile) { @@ -296,9 +298,12 @@ public final class DeviceProfilesSettings extends DialogFragment implements if (which == OK_BUTTON) { device.disconnect(profile); profile.setPreferred(device.getDevice(), false); - } - if (profile instanceof MapProfile) { - device.setMessagePermissionChoice(BluetoothDevice.ACCESS_REJECTED); + if (profile instanceof MapProfile) { + device.setMessagePermissionChoice(BluetoothDevice.ACCESS_REJECTED); + } + if (profile instanceof PbapServerProfile) { + device.setPhonebookPermissionChoice(BluetoothDevice.ACCESS_REJECTED); + } } refreshProfilePreference(findProfile(profile.toString()), profile); } -- cgit v1.1