Revert "Revert "Target system_current for PermissionController.""

This reverts commit 6a87a082773952dfe5517df9ff025f1220e6a24d.

Reason for revert: Merge with required changes to PendingIntents

Merged-In: I8d145248221868f1e69453958543ed66c1648037
Change-Id: I16e14315f3e833591f3e8eac683412bff6fe2948
diff --git a/PermissionController/Android.bp b/PermissionController/Android.bp
index 9d5cbec..266e58c 100644
--- a/PermissionController/Android.bp
+++ b/PermissionController/Android.bp
@@ -71,6 +71,7 @@
 android_app {
     name: "PermissionController",
     sdk_version: "system_current",
+    target_sdk_version: "system_current",
     min_sdk_version: "30",
     updatable: true,
     privileged: true,
diff --git a/PermissionController/AndroidManifest.xml b/PermissionController/AndroidManifest.xml
index f0d4ebb..0b3a78a 100644
--- a/PermissionController/AndroidManifest.xml
+++ b/PermissionController/AndroidManifest.xml
@@ -51,8 +51,6 @@
     <uses-permission android:name="android.permission.START_VIEW_PERMISSION_USAGE" />
     <uses-permission android:name="android.permission.MANAGE_APP_HIBERNATION" />
 
-    <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" />
-
     <application android:name="com.android.permissioncontroller.PermissionControllerApplication"
             android:label="@string/app_name"
             android:icon="@drawable/ic_permission_controller_app_icon"
@@ -64,13 +62,15 @@
             android:directBootAware="true"
             android:theme="@style/FilterTouches">
 
-        <receiver android:name="com.android.permissioncontroller.permission.service.LocationAccessCheck$SetupPeriodicBackgroundLocationAccessCheck">
+        <receiver android:name="com.android.permissioncontroller.permission.service.LocationAccessCheck$SetupPeriodicBackgroundLocationAccessCheck"
+                  android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
             </intent-filter>
         </receiver>
 
-        <receiver android:name="com.android.permissioncontroller.hibernation.HibernationOnBootReceiver">
+        <receiver android:name="com.android.permissioncontroller.hibernation.HibernationOnBootReceiver"
+                  android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
             </intent-filter>
@@ -80,7 +80,8 @@
 
         <receiver android:name="com.android.permissioncontroller.permission.service.LocationAccessCheck$NotificationClickHandler" />
 
-        <receiver android:name="com.android.permissioncontroller.permission.service.LocationAccessCheck$PackageResetHandler">
+        <receiver android:name="com.android.permissioncontroller.permission.service.LocationAccessCheck$PackageResetHandler"
+                  android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED"/>
                 <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" />
@@ -101,6 +102,7 @@
         <activity android:name="com.android.permissioncontroller.permission.ui.GrantPermissionsActivity"
                 android:configChanges="keyboardHidden|screenSize"
                 android:excludeFromRecents="true"
+                android:exported="true"
                 android:theme="@style/GrantPermissions.FilterTouches"
                 android:visibleToInstantApps="true"
                 android:inheritShowWhenLocked="true"
@@ -114,6 +116,7 @@
         <activity android:name="com.android.permissioncontroller.permission.ui.ManagePermissionsActivity"
                   android:configChanges="orientation|keyboardHidden|screenSize"
                   android:label="@string/app_permissions"
+                  android:exported="true"
                   android:theme="@style/Theme.PermissionController.Settings.FilterTouches"
                   android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS">
             <intent-filter android:priority="1">
@@ -130,6 +133,7 @@
 
         <activity android:name="com.android.permissioncontroller.permission.ui.ManagePermissionsActivityTrampoline"
                   android:excludeFromRecents="true"
+                  android:exported="true"
                   android:noHistory="true"
                   android:theme="@android:style/Theme.NoDisplay">
             <intent-filter android:priority="1">
@@ -147,6 +151,7 @@
 
         <activity android:name="com.android.permissioncontroller.permission.ui.ReviewPermissionsActivity"
                   android:excludeFromRecents="true"
+                  android:exported="true"
                   android:theme="@style/ReviewPermissions.FilterTouches"
                   android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS">
             <intent-filter android:priority="1">
@@ -165,6 +170,7 @@
 
         <activity android:name="com.android.permissioncontroller.permission.ui.ReviewOngoingUsageActivity"
                   android:excludeFromRecents="true"
+                  android:exported="true"
                   android:theme="@style/PermissionDialog"
                   android:launchMode="singleInstance"
                   android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS" >
@@ -176,6 +182,7 @@
 
         <activity android:name="com.android.permissioncontroller.permission.ui.ReviewAccessibilityServicesActivity"
                   android:excludeFromRecents="true"
+                  android:exported="true"
                   android:theme="@style/PermissionDialog.FilterTouches"
                   android:permission="android.permission.REVIEW_ACCESSIBILITY_SERVICES" >
             <intent-filter android:priority="1">
@@ -186,6 +193,7 @@
 
         <activity android:name="com.android.permissioncontroller.role.ui.RequestRoleActivity"
                   android:excludeFromRecents="true"
+                  android:exported="true"
                   android:theme="@style/RequestRole.FilterTouches">
             <intent-filter android:priority="1">
                 <action android:name="android.app.role.action.REQUEST_ROLE" />
@@ -203,6 +211,7 @@
 
         <activity android:name="com.android.permissioncontroller.role.ui.DefaultAppListActivity"
                   android:label="@string/default_apps"
+                  android:exported="true"
                   android:theme="@style/Theme.PermissionController.Settings.FilterTouches">
             <intent-filter android:priority="2">
                 <action android:name="android.settings.MANAGE_DEFAULT_APPS_SETTINGS" />
@@ -211,6 +220,7 @@
         </activity>
 
         <activity android:name="com.android.permissioncontroller.role.ui.DefaultAppActivity"
+                  android:exported="true"
                   android:permission="android.permission.MANAGE_ROLE_HOLDERS"
                   android:theme="@style/Theme.PermissionController.Settings.FilterTouches">
             <intent-filter android:priority="1">
@@ -222,6 +232,7 @@
         <activity android:name="com.android.permissioncontroller.role.ui.HomeSettingsActivity"
                   android:excludeFromRecents="true"
                   android:noHistory="true"
+                  android:exported="true"
                   android:theme="@android:style/Theme.NoDisplay">
             <intent-filter android:priority="2">
                 <action android:name="android.settings.HOME_SETTINGS" />
@@ -231,6 +242,7 @@
 
         <activity android:name="com.android.permissioncontroller.role.ui.SpecialAppAccessListActivity"
                   android:label="@string/special_app_access"
+                  android:exported="true"
                   android:permission="android.permission.MANAGE_ROLE_HOLDERS"
                   android:theme="@style/Theme.PermissionController.Settings.FilterTouches">
             <intent-filter android:priority="1">
@@ -246,6 +258,7 @@
         <activity android:name="com.android.permissioncontroller.role.ui.RoleSearchTrampolineActivity"
                   android:excludeFromRecents="true"
                   android:noHistory="true"
+                  android:exported="true"
                   android:theme="@android:style/Theme.NoDisplay">
             <intent-filter android:priority="1">
                 <action android:name="com.android.permissioncontroller.settingssearch.action.MANAGE_DEFAULT_APP" />
@@ -276,6 +289,7 @@
         </provider>
 
         <service android:name="com.android.permissioncontroller.permission.service.PermissionControllerServiceImpl"
+                 android:exported="true"
                  android:visibleToInstantApps="true">
             <intent-filter android:priority="1">
                 <action android:name="android.permission.PermissionControllerService"/>
@@ -283,19 +297,22 @@
         </service>
 
         <service android:name="com.android.permissioncontroller.permission.service.RuntimePermissionPresenterServiceLegacyImpl"
+                 android:exported="true"
                  android:permission="android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE">
             <intent-filter android:priority="1">
                 <action android:name="android.permissionpresenterservice.RuntimePermissionPresenterService"/>
             </intent-filter>
         </service>
 
-        <service android:name="com.android.permissioncontroller.role.service.RoleControllerServiceImpl">
+        <service android:name="com.android.permissioncontroller.role.service.RoleControllerServiceImpl"
+                 android:exported="true">
             <intent-filter android:priority="1">
                 <action android:name="android.app.role.RoleControllerService"/>
             </intent-filter>
         </service>
 
-        <receiver android:name="com.android.permissioncontroller.role.service.ClearUserDeniedReceiver">
+        <receiver android:name="com.android.permissioncontroller.role.service.ClearUserDeniedReceiver"
+                  android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" />
                 <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED"/>
diff --git a/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt b/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt
index 10a58ab..6e0c12c 100644
--- a/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt
+++ b/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt
@@ -568,7 +568,8 @@
             flags = Intent.FLAG_ACTIVITY_NEW_TASK
         }
         val pendingIntent = PendingIntent.getActivity(this, 0, clickIntent,
-                PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_UPDATE_CURRENT)
+                PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_UPDATE_CURRENT or
+                PendingIntent.FLAG_IMMUTABLE)
 
         var notifTitle: String
         var notifContent: String
diff --git a/PermissionController/src/com/android/permissioncontroller/incident/PendingList.java b/PermissionController/src/com/android/permissioncontroller/incident/PendingList.java
index f4a7752..d732732 100644
--- a/PermissionController/src/com/android/permissioncontroller/incident/PendingList.java
+++ b/PermissionController/src/com/android/permissioncontroller/incident/PendingList.java
@@ -244,13 +244,13 @@
 
                 // Intent for the confirmation dialog.
                 final PendingIntent dialog = PendingIntent.getActivity(mContext, 0,
-                        newDialogIntent(rec), 0);
+                        newDialogIntent(rec), PendingIntent.FLAG_IMMUTABLE);
 
                 // Intent for the approval and denial.
                 final PendingIntent deny = PendingIntent.getBroadcast(mContext, 0,
                         new Intent(ApprovalReceiver.ACTION_DENY, rec.report.getUri(),
                             mContext, ApprovalReceiver.class),
-                        0);
+                        PendingIntent.FLAG_IMMUTABLE);
 
                 // Construct the notification
                 final Notification notification = new Notification.Builder(mContext)
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/LocationAccessCheck.java b/PermissionController/src/com/android/permissioncontroller/permission/service/LocationAccessCheck.java
index 76e3f33..d1d6c03 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/LocationAccessCheck.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/service/LocationAccessCheck.java
@@ -20,6 +20,7 @@
 import static android.Manifest.permission_group.LOCATION;
 import static android.app.AppOpsManager.OPSTR_FINE_LOCATION;
 import static android.app.NotificationManager.IMPORTANCE_LOW;
+import static android.app.PendingIntent.FLAG_IMMUTABLE;
 import static android.app.PendingIntent.FLAG_ONE_SHOT;
 import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
 import static android.app.PendingIntent.getBroadcast;
@@ -603,9 +604,9 @@
                 .setColor(mContext.getColor(android.R.color.system_notification_accent_color))
                 .setAutoCancel(true)
                 .setDeleteIntent(getBroadcast(mContext, 0, deleteIntent,
-                        FLAG_ONE_SHOT | FLAG_UPDATE_CURRENT))
+                        FLAG_ONE_SHOT | FLAG_UPDATE_CURRENT | FLAG_IMMUTABLE))
                 .setContentIntent(getBroadcast(mContext, 0, clickIntent,
-                        FLAG_ONE_SHOT | FLAG_UPDATE_CURRENT));
+                        FLAG_ONE_SHOT | FLAG_UPDATE_CURRENT | FLAG_IMMUTABLE));
 
         if (appName != null) {
             Bundle extras = new Bundle();
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/AutoGrantPermissionsNotifier.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/AutoGrantPermissionsNotifier.java
index a006e4b..8775d39 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/AutoGrantPermissionsNotifier.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/AutoGrantPermissionsNotifier.java
@@ -16,6 +16,7 @@
 
 package com.android.permissioncontroller.permission.ui;
 
+import static android.app.PendingIntent.FLAG_IMMUTABLE;
 import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
 import static android.app.PendingIntent.getActivity;
 import static android.content.Intent.ACTION_MANAGE_APP_PERMISSION;
@@ -166,7 +167,7 @@
                 .setLargeIcon(pkgIconBmp)
                 .setColor(mContext.getColor(android.R.color.system_notification_accent_color))
                 .setContentIntent(getActivity(mContext, packageBasedRequestCode,
-                            manageAppPermission, FLAG_UPDATE_CURRENT));
+                            manageAppPermission, FLAG_UPDATE_CURRENT | FLAG_IMMUTABLE));
 
         // Add the Settings app name since we masquerade it.
         CharSequence appName = getSettingsAppName();