Bluetooth: Add pairing initiator extra
Bug: 150156492
Test: pair two devices, unpair on one device, try to reconnect
Change-Id: I96379d0afe5b624f09e2825dedaef8f9883a924c
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingController.java b/src/com/android/settings/bluetooth/BluetoothPairingController.java
index a1d86be..ca3dda6 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingController.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingController.java
@@ -60,6 +60,7 @@
private String mUserInput;
private String mPasskeyFormatted;
private int mPasskey;
+ private int mInitiator;
private String mDeviceName;
private LocalBluetoothProfile mPbapClientProfile;
private boolean mPbapAllowed;
@@ -84,6 +85,8 @@
mType = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR);
mPasskey = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_KEY, BluetoothDevice.ERROR);
+ mInitiator =
+ intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_INITIATOR, BluetoothDevice.ERROR);
mDeviceName = mBluetoothManager.getCachedDeviceManager().getName(mDevice);
mPbapClientProfile = mBluetoothManager.getProfileManager().getPbapClientProfile();
mPasskeyFormatted = formatKey(mPasskey);
@@ -177,7 +180,7 @@
default:
if (mDevice.getBluetoothClass().getDeviceClass()
== BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE) {
- return true;
+ return BluetoothDevice.EXTRA_PAIRING_INITIATOR_FOREGROUND == mInitiator;
}
return false;
}
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingRequest.java b/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
index 7da6342..bd78b55 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
@@ -37,9 +37,6 @@
if (!action.equals(BluetoothDevice.ACTION_PAIRING_REQUEST)) {
return;
}
- // convert broadcast intent into activity intent (same action string)
- Intent pairingIntent = BluetoothPairingService.getPairingDialogIntent(context, intent);
-
PowerManager powerManager =
(PowerManager)context.getSystemService(Context.POWER_SERVICE);
BluetoothDevice device =
@@ -51,6 +48,10 @@
if (powerManager.isInteractive() && shouldShowDialog) {
// Since the screen is on and the BT-related activity is in the foreground,
// just open the dialog
+ // convert broadcast intent into activity intent (same action string)
+ Intent pairingIntent = BluetoothPairingService.getPairingDialogIntent(context, intent,
+ BluetoothDevice.EXTRA_PAIRING_INITIATOR_FOREGROUND);
+
context.startActivityAsUser(pairingIntent, UserHandle.CURRENT);
} else {
// Put up a notification that leads to the dialog
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingService.java b/src/com/android/settings/bluetooth/BluetoothPairingService.java
index 53e93d9..10d5ca8 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingService.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingService.java
@@ -51,7 +51,7 @@
private BluetoothDevice mDevice;
- public static Intent getPairingDialogIntent(Context context, Intent intent) {
+ public static Intent getPairingDialogIntent(Context context, Intent intent, int initiator) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
int type = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT,
BluetoothDevice.ERROR);
@@ -65,6 +65,7 @@
int pairingKey = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_KEY,
BluetoothDevice.ERROR);
pairingIntent.putExtra(BluetoothDevice.EXTRA_PAIRING_KEY, pairingKey);
+ pairingIntent.putExtra(BluetoothDevice.EXTRA_PAIRING_INITIATOR, initiator);
}
pairingIntent.setAction(BluetoothDevice.ACTION_PAIRING_REQUEST);
pairingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -124,7 +125,8 @@
.setLocalOnly(true);
PendingIntent pairIntent = PendingIntent.getActivity(this, 0,
- getPairingDialogIntent(this, intent),
+ getPairingDialogIntent(this, intent,
+ BluetoothDevice.EXTRA_PAIRING_INITIATOR_BACKGROUND),
PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent dismissIntent = PendingIntent.getBroadcast(this, 0,