mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
mType = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR);
- mDevice.fetchUuidsWithSdp();
switch (mType) {
case BluetoothDevice.PAIRING_VARIANT_PIN:
}
}
- private void processPhonebookAccess() {
- CachedBluetoothDevice cachedDevice = mCachedDeviceManager.findDevice(mDevice);
- if (cachedDevice == null) {
- cachedDevice = mCachedDeviceManager.addDevice(
- mBluetoothManager.getBluetoothAdapter(),
- mBluetoothManager.getProfileManager(),
- mDevice);
- }
- ParcelUuid[] uuids = mDevice.getUuids();
- if (BluetoothUuid.containsAnyUuid(uuids, PbapServerProfile.PBAB_CLIENT_UUIDS)) {
- cachedDevice.setPhonebookPermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED);
- }
- }
-
private void onPair(String value) {
- processPhonebookAccess();
-
switch (mType) {
case BluetoothDevice.PAIRING_VARIANT_PIN:
byte[] pinBytes = BluetoothDevice.convertPinToBytes(value);
import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
+import android.bluetooth.BluetoothUuid;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.ParcelUuid;
ParcelUuid[] localUuids = mLocalAdapter.getUuids();
if (localUuids == null) return false;
+ /**
+ * Now we know if the device supports PBAP, update permissions...
+ */
+ processPhonebookAccess();
+
mProfileManager.updateProfiles(uuids, localUuids, mProfiles, mRemovedProfiles,
mLocalNapRoleConnected, mDevice);
}
editor.commit();
}
+
+ private void processPhonebookAccess() {
+ if (mDevice.getBondState() != BluetoothDevice.BOND_BONDED) return;
+
+ ParcelUuid[] uuids = mDevice.getUuids();
+ if (BluetoothUuid.containsAnyUuid(uuids, PbapServerProfile.PBAB_CLIENT_UUIDS)) {
+ // The pairing dialog now warns of phone-book access for paired devices.
+ // No separate prompt is displayed after pairing.
+ setPhonebookPermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED);
+ }
+ }
}