summaryrefslogtreecommitdiffstats
path: root/core/java/android/bluetooth
diff options
context:
space:
mode:
authorEdward Jee <edjee@google.com>2014-09-05 00:29:14 -0700
committerEdward Jee <edjee@google.com>2014-09-09 15:10:01 -0700
commit8dd30aadaf133fe1b8974847efdd5b8cf285136d (patch)
tree17ac5dcc5ac8bc641ca188c19b9dd594df74df0b /core/java/android/bluetooth
parent3f70141ed0defa413f48bf9d906fad72b8401bda (diff)
downloadframeworks_base-8dd30aadaf133fe1b8974847efdd5b8cf285136d.zip
frameworks_base-8dd30aadaf133fe1b8974847efdd5b8cf285136d.tar.gz
frameworks_base-8dd30aadaf133fe1b8974847efdd5b8cf285136d.tar.bz2
Adds APIs for Bluetooth PBAP and MAP access permission.
Currently, users' preference in phonebook and call history or message access per each Bluetooth-paired device is stored in Settings application's shared preferences. However, some privileged applications other than Settings need to access such data. So we decided to migrate the data from Settings application's shared preferences to Bluetooth application's. Bug: 17158953 Change-Id: I3771f03eaea3f57cf60d93ab9fd41c9eb3e1e99c
Diffstat (limited to 'core/java/android/bluetooth')
-rw-r--r--core/java/android/bluetooth/BluetoothDevice.java131
-rw-r--r--core/java/android/bluetooth/IBluetooth.aidl5
2 files changed, 102 insertions, 34 deletions
diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java
index 860512b..5e50b69 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
@@ -952,39 +973,6 @@ public final class BluetoothDevice implements Parcelable {
}
/**
- * Get trust state of a remote device.
- * <p>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.
- * <p>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.
*
* <p>This method does not start a service discovery procedure to retrieve the UUIDs
@@ -1135,6 +1123,82 @@ public final class BluetoothDevice implements Parcelable {
}
/**
+ * 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.
+ * <p>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.
+ * <p>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.
* <p>The remote device will be authenticated and communication on this
@@ -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 19c600c..cf2a343 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);