diff --git a/api/current.txt b/api/current.txt index f4f36029b3b6a..ff72c4a6de63f 100644 --- a/api/current.txt +++ b/api/current.txt @@ -33,6 +33,7 @@ package android { field public static final java.lang.String BIND_WALLPAPER = "android.permission.BIND_WALLPAPER"; field public static final java.lang.String BLUETOOTH = "android.permission.BLUETOOTH"; field public static final java.lang.String BLUETOOTH_ADMIN = "android.permission.BLUETOOTH_ADMIN"; + field public static final java.lang.String BLUETOOTH_PRIVILEGED = "android.permission.BLUETOOTH_PRIVILEGED"; field public static final java.lang.String BRICK = "android.permission.BRICK"; field public static final java.lang.String BROADCAST_PACKAGE_REMOVED = "android.permission.BROADCAST_PACKAGE_REMOVED"; field public static final java.lang.String BROADCAST_SMS = "android.permission.BROADCAST_SMS"; @@ -5103,6 +5104,7 @@ package android.bluetooth { public final class BluetoothDevice implements android.os.Parcelable { method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback); + method public boolean createBond(); method public android.bluetooth.BluetoothSocket createInsecureRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException; method public android.bluetooth.BluetoothSocket createRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException; method public int describeContents(); @@ -5113,6 +5115,8 @@ package android.bluetooth { method public java.lang.String getName(); method public int getType(); method public android.os.ParcelUuid[] getUuids(); + method public boolean setPairingConfirmation(boolean); + method public boolean setPin(byte[]); method public void writeToParcel(android.os.Parcel, int); field public static final java.lang.String ACTION_ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED"; field public static final java.lang.String ACTION_ACL_DISCONNECTED = "android.bluetooth.device.action.ACL_DISCONNECTED"; @@ -5121,6 +5125,7 @@ package android.bluetooth { field public static final java.lang.String ACTION_CLASS_CHANGED = "android.bluetooth.device.action.CLASS_CHANGED"; field public static final java.lang.String ACTION_FOUND = "android.bluetooth.device.action.FOUND"; field public static final java.lang.String ACTION_NAME_CHANGED = "android.bluetooth.device.action.NAME_CHANGED"; + field public static final java.lang.String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST"; field public static final java.lang.String ACTION_UUID = "android.bluetooth.device.action.UUID"; field public static final int BOND_BONDED = 12; // 0xc field public static final int BOND_BONDING = 11; // 0xb @@ -5135,9 +5140,13 @@ package android.bluetooth { field public static final java.lang.String EXTRA_CLASS = "android.bluetooth.device.extra.CLASS"; field public static final java.lang.String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE"; field public static final java.lang.String EXTRA_NAME = "android.bluetooth.device.extra.NAME"; + field public static final java.lang.String EXTRA_PAIRING_KEY = "android.bluetooth.device.extra.PAIRING_KEY"; + field public static final java.lang.String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT"; field public static final java.lang.String EXTRA_PREVIOUS_BOND_STATE = "android.bluetooth.device.extra.PREVIOUS_BOND_STATE"; field public static final java.lang.String EXTRA_RSSI = "android.bluetooth.device.extra.RSSI"; field public static final java.lang.String EXTRA_UUID = "android.bluetooth.device.extra.UUID"; + field public static final int PAIRING_VARIANT_PASSKEY_CONFIRMATION = 2; // 0x2 + field public static final int PAIRING_VARIANT_PIN = 0; // 0x0 } public final class BluetoothGatt implements android.bluetooth.BluetoothProfile { diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java index 2c85382fe13c8..1efdc8186442b 100644 --- a/core/java/android/bluetooth/BluetoothDevice.java +++ b/core/java/android/bluetooth/BluetoothDevice.java @@ -219,7 +219,7 @@ public final class BluetoothDevice implements Parcelable { * {@link #BOND_NONE}, * {@link #BOND_BONDING}, * {@link #BOND_BONDED}. - */ + */ public static final String EXTRA_BOND_STATE = "android.bluetooth.device.extra.BOND_STATE"; /** * Used as an int extra field in {@link #ACTION_BOND_STATE_CHANGED} intents. @@ -228,7 +228,7 @@ public final class BluetoothDevice implements Parcelable { * {@link #BOND_NONE}, * {@link #BOND_BONDING}, * {@link #BOND_BONDED}. - */ + */ public static final String EXTRA_PREVIOUS_BOND_STATE = "android.bluetooth.device.extra.PREVIOUS_BOND_STATE"; /** @@ -253,12 +253,26 @@ public final class BluetoothDevice implements Parcelable { */ public static final int BOND_BONDED = 12; - /** @hide */ + /** + * Used as an int extra field in {@link #ACTION_PAIRING_REQUEST} + * intents for unbond reason. + * @hide + */ public static final String EXTRA_REASON = "android.bluetooth.device.extra.REASON"; - /** @hide */ + + /** + * Used as an int extra field in {@link #ACTION_PAIRING_REQUEST} + * intents to indicate pairing method used. Possible values are: + * {@link #PAIRING_VARIANT_PIN}, + * {@link #PAIRING_VARIANT_PASSKEY_CONFIRMATION}, + */ public static final String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT"; - /** @hide */ + + /** + * Used as an int extra field in {@link #ACTION_PAIRING_REQUEST} + * intents as the value of passkey. + */ public static final String EXTRA_PAIRING_KEY = "android.bluetooth.device.extra.PAIRING_KEY"; /** @@ -306,7 +320,10 @@ public final class BluetoothDevice implements Parcelable { public static final String ACTION_NAME_FAILED = "android.bluetooth.device.action.NAME_FAILED"; - /** @hide */ + /** + * Broadcast Action: This intent is used to broadcast PAIRING REQUEST + *
Requires {@link android.Manifest.permission#BLUETOOTH} to receive. + */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST"; @@ -446,8 +463,8 @@ public final class BluetoothDevice implements Parcelable { public static final int UNBOND_REASON_REMOVED = 9; /** - * The user will be prompted to enter a pin - * @hide + * The user will be prompted to enter a pin or + * a privileged app will enter a pin for user. */ public static final int PAIRING_VARIANT_PIN = 0; @@ -458,8 +475,8 @@ public final class BluetoothDevice implements Parcelable { public static final int PAIRING_VARIANT_PASSKEY = 1; /** - * The user will be prompted to confirm the passkey displayed on the screen - * @hide + * The user will be prompted to confirm the passkey displayed on the screen or + * a privileged app will confirm the passkey for the user. */ public static final int PAIRING_VARIANT_PASSKEY_CONFIRMATION = 2; @@ -707,10 +724,9 @@ public final class BluetoothDevice implements Parcelable { * the bonding process completes, and its result. *
Android system services will handle the necessary user interactions * to confirm and complete the bonding process. - *
Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}. + *
Requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED}. * * @return false on immediate error, true if bonding will begin - * @hide */ public boolean createBond() { if (sService == null) { @@ -946,7 +962,13 @@ public final class BluetoothDevice implements Parcelable { return BluetoothDevice.ERROR; } - /** @hide */ + /** + * Set the pin during pairing when the pairing method is {@link #PAIRING_VARIANT_PIN} + *
Requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED}. + * + * @return true pin has been set + * false for error + */ public boolean setPin(byte[] pin) { if (sService == null) { Log.e(TAG, "BT not enabled. Cannot set Remote Device pin"); @@ -968,7 +990,13 @@ public final class BluetoothDevice implements Parcelable { return false; } - /** @hide */ + /** + * Confirm passkey for {@link #PAIRING_VARIANT_PASSKEY_CONFIRMATION} pairing. + *
Requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED}.
+ *
+ * @return true confirmation has been sent out
+ * false for error
+ */
public boolean setPairingConfirmation(boolean confirm) {
if (sService == null) {
Log.e(TAG, "BT not enabled. Cannot set pairing confirmation");
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index b41b5b569da97..4c73cd7df6f5b 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -773,6 +773,13 @@
android:description="@string/permdesc_bluetoothAdmin"
android:label="@string/permlab_bluetoothAdmin" />
+
+