diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java index 860512b9f9d09..5e50b696b2270 100644 --- a/core/java/android/bluetooth/BluetoothDevice.java +++ b/core/java/android/bluetooth/BluetoothDevice.java @@ -517,6 +517,27 @@ public final class BluetoothDevice implements Parcelable { */ public static final String EXTRA_UUID = "android.bluetooth.device.extra.UUID"; + /** + * For {@link #getPhonebookAccessPermission}, {@link #setPhonebookAccessPermission}, + * {@link #getMessageAccessPermission} and {@link #setMessageAccessPermission}. + * @hide + */ + public static final int ACCESS_UNKNOWN = 0; + + /** + * For {@link #getPhonebookAccessPermission}, {@link #setPhonebookAccessPermission}, + * {@link #getMessageAccessPermission} and {@link #setMessageAccessPermission}. + * @hide + */ + public static final int ACCESS_ALLOWED = 1; + + /** + * For {@link #getPhonebookAccessPermission}, {@link #setPhonebookAccessPermission}, + * {@link #getMessageAccessPermission} and {@link #setMessageAccessPermission}. + * @hide + */ + public static final int ACCESS_REJECTED = 2; + /** * No preferrence of physical transport for GATT connections to remote dual-mode devices * @hide @@ -951,39 +972,6 @@ public final class BluetoothDevice implements Parcelable { return null; } - /** - * Get trust state of a remote device. - *

Requires {@link android.Manifest.permission#BLUETOOTH}. - * @hide - */ - public boolean getTrustState() { - //TODO(BT) - /* - try { - return sService.getTrustState(this); - } catch (RemoteException e) { - Log.e(TAG, "", e); - }*/ - return false; - } - - /** - * Set trust state for a remote device. - *

Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}. - * @param value the trust state value (true or false) - * @hide - */ - public boolean setTrust(boolean value) { - //TODO(BT) - /* - try { - return sService.setTrust(this, value); - } catch (RemoteException e) { - Log.e(TAG, "", e); - }*/ - return false; - } - /** * Returns the supported features (UUIDs) of the remote device. * @@ -1134,6 +1122,82 @@ public final class BluetoothDevice implements Parcelable { return false; } + /** + * Requires {@link android.Manifest.permission#BLUETOOTH}. + * @return Whether the phonebook access is allowed to this device. Can be + * {@link #ACCESS_UNKNOWN}, {@link #ACCESS_ALLOWED} or {@link #ACCESS_REJECTED}. + * @hide + */ + public int getPhonebookAccessPermission() { + if (sService == null) { + return ACCESS_UNKNOWN; + } + try { + return sService.getPhonebookAccessPermission(this); + } catch (RemoteException e) { + Log.e(TAG, "", e); + } + return ACCESS_UNKNOWN; + } + + /** + * Sets whether the phonebook access is allowed to this device. + *

Requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED}. + * @param value Can be {@link #ACCESS_UNKNOWN}, {@link #ACCESS_ALLOWED} or + * {@link #ACCESS_REJECTED}. + * @return Whether the value has been successfully set. + * @hide + */ + public boolean setPhonebookAccessPermission(int value) { + if (sService == null) { + return false; + } + try { + return sService.setPhonebookAccessPermission(this, value); + } catch (RemoteException e) { + Log.e(TAG, "", e); + } + return false; + } + + /** + * Requires {@link android.Manifest.permission#BLUETOOTH}. + * @return Whether the message access is allowed to this device. Can be + * {@link #ACCESS_UNKNOWN}, {@link #ACCESS_ALLOWED} or {@link #ACCESS_REJECTED}. + * @hide + */ + public int getMessageAccessPermission() { + if (sService == null) { + return ACCESS_UNKNOWN; + } + try { + return sService.getMessageAccessPermission(this); + } catch (RemoteException e) { + Log.e(TAG, "", e); + } + return ACCESS_UNKNOWN; + } + + /** + * Sets whether the message access is allowed to this device. + *

Requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED}. + * @param value Can be {@link #ACCESS_UNKNOWN}, {@link #ACCESS_ALLOWED} or + * {@link #ACCESS_REJECTED}. + * @return Whether the value has been successfully set. + * @hide + */ + public boolean setMessageAccessPermission(int value) { + if (sService == null) { + return false; + } + try { + return sService.setMessageAccessPermission(this, value); + } catch (RemoteException e) { + Log.e(TAG, "", e); + } + return false; + } + /** * Create an RFCOMM {@link BluetoothSocket} ready to start a secure * outgoing connection to this remote device on given channel. @@ -1343,5 +1407,4 @@ public final class BluetoothDevice implements Parcelable { } catch (RemoteException e) {Log.e(TAG, "", e);} return null; } - } diff --git a/core/java/android/bluetooth/IBluetooth.aidl b/core/java/android/bluetooth/IBluetooth.aidl index 19c600cafe93c..cf2a343dc0473 100644 --- a/core/java/android/bluetooth/IBluetooth.aidl +++ b/core/java/android/bluetooth/IBluetooth.aidl @@ -75,6 +75,11 @@ interface IBluetooth passkey); boolean setPairingConfirmation(in BluetoothDevice device, boolean accept); + int getPhonebookAccessPermission(in BluetoothDevice device); + boolean setPhonebookAccessPermission(in BluetoothDevice device, int value); + int getMessageAccessPermission(in BluetoothDevice device); + boolean setMessageAccessPermission(in BluetoothDevice device, int value); + void sendConnectionStateChange(in BluetoothDevice device, int profile, int state, int prevState); void registerCallback(in IBluetoothCallback callback); diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index bf2d09bf84e9f..03a5e239a81f8 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -864,7 +864,8 @@ android:description="@string/permdesc_bluetoothAdmin" android:label="@string/permlab_bluetoothAdmin" /> -