Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c02592d7 authored by Hui Yu's avatar Hui Yu
Browse files

Remove the notification when FGS while-in-use permission is restricted.

Bug: 136219221
Test: atest cts/tests/app/src/android/app/cts/ActivityManagerApi29Test.java
Change-Id: I996abab1c7032e5247883f3b06ba2bd82c425007
parent 21e618d9
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -252,9 +252,6 @@ message SystemMessage {
    // Package: android
    NOTE_ID_WIFI_SIM_REQUIRED = 60;

    // Inform the user a foreground service while-in-use permission is restricted.
    NOTE_FOREGROUND_SERVICE_WHILE_IN_USE_PERMISSION = 61;

    // Display the Android Debug Protocol status
    // Package: android
    NOTE_ADB_WIFI_ACTIVE = 62;
+1 −39
Original line number Diff line number Diff line
@@ -4917,35 +4917,7 @@ public final class ActiveServices {
    }

    // TODO: remove this toast after feature development is done
    private void showWhileInUsePermissionInFgsBlockedNotificationLocked(String callingPackage,
            String detailInfo) {
        final Context context = mAm.mContext;
        final String title = "Foreground Service While-in-use Permission Restricted";
        final String content = "App affected:" + callingPackage + ", please file a bug report";
        Notification.Builder n =
                new Notification.Builder(context,
                        SystemNotificationChannels.ALERTS)
                        .setSmallIcon(R.drawable.stat_sys_vitals)
                        .setWhen(0)
                        .setColor(context.getColor(
                                com.android.internal.R.color.system_notification_accent_color))
                        .setTicker(title)
                        .setContentTitle(title)
                        .setContentText(content)
                        .setStyle(new Notification.BigTextStyle().bigText(detailInfo));
        final NotificationManager notificationManager =
                (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
        notificationManager.notifyAsUser(null,
                SystemMessageProto.SystemMessage.NOTE_FOREGROUND_SERVICE_WHILE_IN_USE_PERMISSION,
                n.build(), UserHandle.ALL);
    }

    // TODO: remove this toast after feature development is done
    // show a toast message to ask user to file a bugreport so we know how many apps are impacted by
    // the new background started foreground service while-in-use permission restriction.
    void showWhileInUseDebugNotificationLocked(int uid, int op, int mode) {
        StringBuilder packageNameBuilder = new StringBuilder();
        StringBuilder detailInfoBuilder = new StringBuilder();
    void showWhileInUseDebugToastLocked(int uid, int op, int mode) {
        for (int i = mAm.mProcessList.mLruProcesses.size() - 1; i >= 0; i--) {
            ProcessRecord pr = mAm.mProcessList.mLruProcesses.get(i);
            if (pr.uid != uid) {
@@ -4962,18 +4934,8 @@ public final class ActiveServices {
                            + " affected while-in-use permission:"
                            + AppOpsManager.opToPublicName(op);
                    Slog.wtf(TAG, msg);
                    packageNameBuilder.append(r.mRecentCallingPackage + " ");
                    detailInfoBuilder.append(msg);
                    detailInfoBuilder.append("\n");
                }
                }
            }

        final String callingPackageStr = packageNameBuilder.toString();
        if (mAm.mConstants.mFlagForegroundServiceStartsLoggingEnabled
                && !callingPackageStr.isEmpty()) {
            showWhileInUsePermissionInFgsBlockedNotificationLocked(callingPackageStr,
                    detailInfoBuilder.toString());
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -19339,7 +19339,7 @@ public class ActivityManagerService extends IActivityManager.Stub
        @Override
        public void showWhileInUseDebugToast(int uid, int op, int mode) {
            synchronized (ActivityManagerService.this) {
                ActivityManagerService.this.mServices.showWhileInUseDebugNotificationLocked(
                ActivityManagerService.this.mServices.showWhileInUseDebugToastLocked(
                        uid, op, mode);
            }
        }