diff --git a/res/values/strings.xml b/res/values/strings.xml index 2cd78066425..977c789c5c0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -12458,4 +12458,6 @@ Quarantined Apps + + Unquarantine app diff --git a/src/com/android/settings/development/quarantine/QuarantinedAppsScreenController.java b/src/com/android/settings/development/quarantine/QuarantinedAppsScreenController.java index e5373fd0bee..c3cb38dfe30 100644 --- a/src/com/android/settings/development/quarantine/QuarantinedAppsScreenController.java +++ b/src/com/android/settings/development/quarantine/QuarantinedAppsScreenController.java @@ -19,6 +19,7 @@ package com.android.settings.development.quarantine; import android.app.Application; import android.content.Context; import android.content.pm.PackageManager; +import android.content.pm.SuspendDialogInfo; import android.os.UserHandle; import androidx.annotation.VisibleForTesting; @@ -181,8 +182,17 @@ public class QuarantinedAppsScreenController extends BasePreferenceController im private void setPackageQuarantined(String pkg, int uid, boolean quarantined) { final PackageManager pm = mContext.createContextAsUser( UserHandle.getUserHandleForUid(uid), 0).getPackageManager(); + final SuspendDialogInfo dialogInfo; + if (quarantined) { + dialogInfo = new SuspendDialogInfo.Builder() + .setNeutralButtonText(R.string.unquarantine_app_button) + .setNeutralButtonAction(SuspendDialogInfo.BUTTON_ACTION_UNSUSPEND) + .build(); + } else { + dialogInfo = null; + } pm.setPackagesSuspended(new String[] {pkg}, quarantined, null /* appExtras */, - null /* launcherExtras */, null /* dialogInfo */, + null /* launcherExtras */, dialogInfo, PackageManager.FLAG_SUSPEND_QUARANTINED); } diff --git a/tests/robotests/src/com/android/settings/development/quarantine/QuarantinedAppsScreenControllerTest.java b/tests/robotests/src/com/android/settings/development/quarantine/QuarantinedAppsScreenControllerTest.java index 32ad0ad8ab3..a93e5291192 100644 --- a/tests/robotests/src/com/android/settings/development/quarantine/QuarantinedAppsScreenControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/quarantine/QuarantinedAppsScreenControllerTest.java @@ -20,6 +20,7 @@ import static org.mockito.AdditionalMatchers.aryEq; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; @@ -28,6 +29,7 @@ import static org.mockito.Mockito.verify; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.content.pm.SuspendDialogInfo; import android.os.UserHandle; import androidx.test.core.app.ApplicationProvider; @@ -70,12 +72,12 @@ public class QuarantinedAppsScreenControllerTest { mController.onPreferenceChange(preference, true); verify(packageManager).setPackagesSuspended(aryEq(new String[] {TEST_PACKAGE}), eq(true), - any(), any(), any(), + isNull(), isNull(), any(SuspendDialogInfo.class), eq(PackageManager.FLAG_SUSPEND_QUARANTINED)); mController.onPreferenceChange(preference, false); verify(packageManager).setPackagesSuspended(aryEq(new String[] {TEST_PACKAGE}), eq(false), - any(), any(), any(), + isNull(), isNull(), isNull(), eq(PackageManager.FLAG_SUSPEND_QUARANTINED)); }