From 7025a83f39ca0780192cc09cf8168c067386a9f1 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Tue, 22 Jun 2021 19:58:58 -0600 Subject: [PATCH] Update to modern Bluetooth permissions. The Settings app offers several Bluetooth intents, and they need to be updated to enforce the new "Nearby devices" runtime permission model, since the old BLUETOOTH and BLUETOOTH_ADMIN permissions have been deprecated. Bug: 191174082 Test: TH Change-Id: I0d812f486bc3dadc517d5b04d3082d4f56f60ef4 --- AndroidManifest.xml | 15 +++++++-------- .../bluetooth/BluetoothPermissionActivity.java | 2 +- .../bluetooth/BluetoothPermissionRequest.java | 2 +- .../settings/bluetooth/DevicePickerFragment.java | 2 +- .../BluetoothPermissionActivityTest.java | 2 +- .../bluetooth/DevicePickerFragmentTest.java | 2 +- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 6f6482daeb5..01d1c039201 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -17,8 +17,7 @@ - - + @@ -2222,7 +2221,7 @@ @@ -2265,7 +2264,7 @@ @@ -2280,7 +2279,7 @@ + android:permission="android.permission.BLUETOOTH_CONNECT"> @@ -2290,7 +2289,7 @@ @@ -3545,7 +3544,7 @@ + android:permission="android.permission.BLUETOOTH_CONNECT"> @@ -3750,7 +3749,7 @@ + android:permission="android.permission.BLUETOOTH_CONNECT"> /> diff --git a/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java b/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java index 211bcc6f4b4..c8f71c400b9 100644 --- a/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java +++ b/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java @@ -221,7 +221,7 @@ public class BluetoothPermissionActivity extends AlertActivity implements intent.putExtra(BluetoothDevice.EXTRA_ALWAYS_ALLOWED, always); intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mDevice); intent.putExtra(BluetoothDevice.EXTRA_ACCESS_REQUEST_TYPE, mRequestType); - sendBroadcast(intent, android.Manifest.permission.BLUETOOTH_ADMIN); + sendBroadcast(intent, android.Manifest.permission.BLUETOOTH_CONNECT); } public void onClick(DialogInterface dialog, int which) { diff --git a/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java b/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java index ff1c1471c02..bd33261fdd1 100644 --- a/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java +++ b/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java @@ -293,6 +293,6 @@ public final class BluetoothPermissionRequest extends BroadcastReceiver { : BluetoothDevice.CONNECTION_ACCESS_NO); intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mDevice); intent.putExtra(BluetoothDevice.EXTRA_ACCESS_REQUEST_TYPE, mRequestType); - mContext.sendBroadcast(intent, android.Manifest.permission.BLUETOOTH_ADMIN); + mContext.sendBroadcast(intent, android.Manifest.permission.BLUETOOTH_CONNECT); } } diff --git a/src/com/android/settings/bluetooth/DevicePickerFragment.java b/src/com/android/settings/bluetooth/DevicePickerFragment.java index 02b5d5c90f0..602b79b2ae9 100644 --- a/src/com/android/settings/bluetooth/DevicePickerFragment.java +++ b/src/com/android/settings/bluetooth/DevicePickerFragment.java @@ -212,6 +212,6 @@ public final class DevicePickerFragment extends DeviceListPreferenceFragment { } } - mContext.sendBroadcast(intent, Manifest.permission.BLUETOOTH_ADMIN); + mContext.sendBroadcast(intent, Manifest.permission.BLUETOOTH_CONNECT); } } diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPermissionActivityTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPermissionActivityTest.java index 35b8f1f00a1..6f027531d65 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPermissionActivityTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPermissionActivityTest.java @@ -53,6 +53,6 @@ public class BluetoothPermissionActivityTest { mActivity.sendReplyIntentToReceiver(true, true); verify(mContext).sendBroadcast(intentCaptor.capture(), - eq("android.permission.BLUETOOTH_ADMIN")); + eq("android.permission.BLUETOOTH_CONNECT")); } } diff --git a/tests/robotests/src/com/android/settings/bluetooth/DevicePickerFragmentTest.java b/tests/robotests/src/com/android/settings/bluetooth/DevicePickerFragmentTest.java index a05ec87b71b..8cd465ca007 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/DevicePickerFragmentTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/DevicePickerFragmentTest.java @@ -82,7 +82,7 @@ public class DevicePickerFragmentTest { mFragment.onDeviceBondStateChanged(cachedDevice, BluetoothDevice.BOND_BONDED); verify(mContext).sendBroadcast(intentCaptor.capture(), - eq("android.permission.BLUETOOTH_ADMIN")); + eq("android.permission.BLUETOOTH_CONNECT")); assertThat(intentCaptor.getValue().getComponent().getPackageName()) .isEqualTo(mFragment.mLaunchPackage); }