Check remote device uuids for phone book access permission
Only give phone book access permission for remote devices that handle PBAP. Bug: 18140961 Change-Id: I128f15460b151d7e0a47cd9b4b15dae10ec586c5
This commit is contained in:
@@ -17,12 +17,14 @@
|
|||||||
package com.android.settings.bluetooth;
|
package com.android.settings.bluetooth;
|
||||||
|
|
||||||
import android.bluetooth.BluetoothDevice;
|
import android.bluetooth.BluetoothDevice;
|
||||||
|
import android.bluetooth.BluetoothUuid;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.ParcelUuid;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.InputFilter;
|
import android.text.InputFilter;
|
||||||
@@ -111,6 +113,7 @@ public final class BluetoothPairingDialog extends AlertActivity implements
|
|||||||
|
|
||||||
mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
||||||
mType = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR);
|
mType = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR);
|
||||||
|
mDevice.fetchUuidsWithSdp();
|
||||||
|
|
||||||
switch (mType) {
|
switch (mType) {
|
||||||
case BluetoothDevice.PAIRING_VARIANT_PIN:
|
case BluetoothDevice.PAIRING_VARIANT_PIN:
|
||||||
@@ -318,7 +321,7 @@ public final class BluetoothPairingDialog extends AlertActivity implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void allowPhonebookAccess() {
|
private void processPhonebookAccess() {
|
||||||
CachedBluetoothDevice cachedDevice = mCachedDeviceManager.findDevice(mDevice);
|
CachedBluetoothDevice cachedDevice = mCachedDeviceManager.findDevice(mDevice);
|
||||||
if (cachedDevice == null) {
|
if (cachedDevice == null) {
|
||||||
cachedDevice = mCachedDeviceManager.addDevice(
|
cachedDevice = mCachedDeviceManager.addDevice(
|
||||||
@@ -326,11 +329,14 @@ public final class BluetoothPairingDialog extends AlertActivity implements
|
|||||||
mBluetoothManager.getProfileManager(),
|
mBluetoothManager.getProfileManager(),
|
||||||
mDevice);
|
mDevice);
|
||||||
}
|
}
|
||||||
cachedDevice.setPhonebookPermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED);
|
ParcelUuid[] uuids = mDevice.getUuids();
|
||||||
|
if (BluetoothUuid.containsAnyUuid(uuids, PbapServerProfile.PBAB_CLIENT_UUIDS)) {
|
||||||
|
cachedDevice.setPhonebookPermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onPair(String value) {
|
private void onPair(String value) {
|
||||||
allowPhonebookAccess();
|
processPhonebookAccess();
|
||||||
|
|
||||||
switch (mType) {
|
switch (mType) {
|
||||||
case BluetoothDevice.PAIRING_VARIANT_PIN:
|
case BluetoothDevice.PAIRING_VARIANT_PIN:
|
||||||
|
@@ -21,7 +21,9 @@ import android.bluetooth.BluetoothClass;
|
|||||||
import android.bluetooth.BluetoothDevice;
|
import android.bluetooth.BluetoothDevice;
|
||||||
import android.bluetooth.BluetoothPbap;
|
import android.bluetooth.BluetoothPbap;
|
||||||
import android.bluetooth.BluetoothProfile;
|
import android.bluetooth.BluetoothProfile;
|
||||||
|
import android.bluetooth.BluetoothUuid;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.ParcelUuid;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -44,6 +46,13 @@ final class PbapServerProfile implements LocalBluetoothProfile {
|
|||||||
// Order of this profile in device profiles list
|
// Order of this profile in device profiles list
|
||||||
private static final int ORDINAL = 6;
|
private static final int ORDINAL = 6;
|
||||||
|
|
||||||
|
// The UUIDs indicate that remote device might access pbap server
|
||||||
|
static final ParcelUuid[] PBAB_CLIENT_UUIDS = {
|
||||||
|
BluetoothUuid.HSP,
|
||||||
|
BluetoothUuid.Handsfree,
|
||||||
|
BluetoothUuid.PBAP_PCE
|
||||||
|
};
|
||||||
|
|
||||||
// These callbacks run on the main thread.
|
// These callbacks run on the main thread.
|
||||||
private final class PbapServiceListener
|
private final class PbapServiceListener
|
||||||
implements BluetoothPbap.ServiceListener {
|
implements BluetoothPbap.ServiceListener {
|
||||||
|
Reference in New Issue
Block a user