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
This commit is contained in:
Hui Yu 2020-02-27 16:20:10 -08:00
parent 21e618d9ba
commit c02592d7b2
3 changed files with 2 additions and 43 deletions

View File

@ -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;

View File

@ -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());
}
}
}

View File

@ -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);
}
}