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
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6f6482d..01d1c03 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -17,8 +17,7 @@
     <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
     <uses-permission android:name="android.permission.VIBRATE" />
-    <uses-permission android:name="android.permission.BLUETOOTH" />
-    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
     <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
     <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
     <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
@@ -2222,7 +2221,7 @@
 
         <activity android:name=".bluetooth.RequestPermissionActivity"
                   android:excludeFromRecents="true"
-                  android:permission="android.permission.BLUETOOTH"
+                  android:permission="android.permission.BLUETOOTH_CONNECT"
                   android:exported="true"
                   android:theme="@style/Theme.BluetoothPermission">
             <intent-filter android:priority="1">
@@ -2265,7 +2264,7 @@
         <activity android:name=".bluetooth.RequestPermissionHelperActivity"
                   android:label="@string/bluetooth_pairing_request"
                   android:excludeFromRecents="true"
-                  android:permission="android.permission.BLUETOOTH"
+                  android:permission="android.permission.BLUETOOTH_CONNECT"
                   android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight">
         </activity>
 
@@ -2280,7 +2279,7 @@
 
         <receiver android:name=".bluetooth.BluetoothPermissionRequest"
                   android:exported="true"
-                  android:permission="android.permission.BLUETOOTH_ADMIN">
+                  android:permission="android.permission.BLUETOOTH_CONNECT">
             <intent-filter>
                 <action android:name="android.bluetooth.device.action.CONNECTION_ACCESS_REQUEST" />
                 <action android:name="android.bluetooth.device.action.CONNECTION_ACCESS_CANCEL" />
@@ -2290,7 +2289,7 @@
         <activity android:name=".bluetooth.BluetoothPermissionActivity"
                   android:label="@string/bluetooth_connection_permission_request"
                   android:excludeFromRecents="true"
-                  android:permission="android.permission.BLUETOOTH_ADMIN"
+                  android:permission="android.permission.BLUETOOTH_CONNECT"
                   android:exported="true"
                   android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.Alert">
             <intent-filter android:priority="1">
@@ -3545,7 +3544,7 @@
         <activity android:name="Settings$BluetoothDeviceDetailActivity"
                   android:label="@string/device_details_title"
                   android:exported="true"
-                  android:permission="android.permission.BLUETOOTH_ADMIN">
+                  android:permission="android.permission.BLUETOOTH_CONNECT">
             <intent-filter android:priority="1">
                 <action android:name="com.android.settings.BLUETOOTH_DEVICE_DETAIL_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -3750,7 +3749,7 @@
         <receiver
             android:name=".media.BluetoothPairingReceiver"
             android:exported="true"
-            android:permission="android.permission.BLUETOOTH_ADMIN">
+            android:permission="android.permission.BLUETOOTH_CONNECT">
             <intent-filter>
                 <action android:name="com.android.settings.action.LAUNCH_BLUETOOTH_PAIRING"/>
             </intent-filter>/>
diff --git a/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java b/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java
index 211bcc6..c8f71c4 100644
--- a/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java
+++ b/src/com/android/settings/bluetooth/BluetoothPermissionActivity.java
@@ -221,7 +221,7 @@
         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 ff1c147..bd33261 100644
--- a/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java
+++ b/src/com/android/settings/bluetooth/BluetoothPermissionRequest.java
@@ -293,6 +293,6 @@
                         : 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 02b5d5c..602b79b 100644
--- a/src/com/android/settings/bluetooth/DevicePickerFragment.java
+++ b/src/com/android/settings/bluetooth/DevicePickerFragment.java
@@ -212,6 +212,6 @@
             }
         }
 
-        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 35b8f1f..6f02753 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 @@
         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 a05ec87..8cd465c 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 @@
         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);
     }