Allow BAL from PrintServiceSettingsFragment

This fixes the info button on the printer in the printer list (the call
is from the system (uid=1000) and needs to allow BAL to start the
activity).

This only opts in sending a single pending intent to the previous (pre U) behavior which allows BAL. Therefore the risk of the change is minimal. This was reported by an external partner.

Bug: 277761614
Test: manual test & presubmit
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:fdb87fe235887460081ed396cf6ab902f1971b5d)
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:afbc3a4929172e287ff3cbff2b5c9598a7c1e490)
Merged-In: I35715e948b9166c42372b7d40a30a7102018a148
Change-Id: I35715e948b9166c42372b7d40a30a7102018a148
diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java
index 39b5ab9..c5316e6 100644
--- a/src/com/android/settings/print/PrintServiceSettingsFragment.java
+++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java
@@ -17,6 +17,7 @@
 package com.android.settings.print;
 
 import android.app.Activity;
+import android.app.ActivityOptions;
 import android.app.settings.SettingsEnums;
 import android.content.ComponentName;
 import android.content.Context;
@@ -547,8 +548,13 @@
                     @Override
                     public void onClick(View v) {
                         try {
+                            Bundle options = ActivityOptions.makeBasic()
+                                    .setPendingIntentBackgroundActivityStartMode(
+                                            ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
+                                    .toBundle();
                             getActivity().startIntentSender(
-                                    printer.getInfoIntent().getIntentSender(), null, 0, 0, 0);
+                                    printer.getInfoIntent().getIntentSender(), null, 0, 0, 0,
+                                    options);
                         } catch (SendIntentException e) {
                             Log.e(LOG_TAG, "Could not execute pending info intent: %s", e);
                         }