diff options
4 files changed, 36 insertions, 10 deletions
diff --git a/core/java/android/content/pm/flags.aconfig b/core/java/android/content/pm/flags.aconfig index a565f6825e7a..d21b81854584 100644 --- a/core/java/android/content/pm/flags.aconfig +++ b/core/java/android/content/pm/flags.aconfig @@ -94,3 +94,10 @@ flag { description: "Feature flag to read install related information from an APK." bug: "275658500" } + +flag { + name: "use_pia_v2" + namespace: "package_manager_service" + description: "Feature flag to enable the refactored Package Installer app with updated UI." + bug: "182205982" +} diff --git a/packages/PackageInstaller/Android.bp b/packages/PackageInstaller/Android.bp index 38bd7d5f3944..6213b34034af 100644 --- a/packages/PackageInstaller/Android.bp +++ b/packages/PackageInstaller/Android.bp @@ -49,6 +49,7 @@ android_app { "androidx.fragment_fragment", "androidx.lifecycle_lifecycle-livedata", "androidx.lifecycle_lifecycle-extensions", + "android.content.pm.flags-aconfig-java", ], lint: { @@ -75,6 +76,7 @@ android_app { "androidx.fragment_fragment", "androidx.lifecycle_lifecycle-livedata", "androidx.lifecycle_lifecycle-extensions", + "android.content.pm.flags-aconfig-java", ], aaptflags: ["--product tablet"], @@ -103,6 +105,7 @@ android_app { "androidx.fragment_fragment", "androidx.lifecycle_lifecycle-livedata", "androidx.lifecycle_lifecycle-extensions", + "android.content.pm.flags-aconfig-java", ], aaptflags: ["--product tv"], diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java index e2107ebe2525..418705845065 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java @@ -16,12 +16,14 @@ package com.android.packageinstaller; +import static android.content.pm.Flags.usePiaV2; import static com.android.packageinstaller.PackageUtil.getMaxTargetSdkVersionForUid; import android.Manifest; import android.app.Activity; import android.app.DialogFragment; import android.app.admin.DevicePolicyManager; +import android.content.ComponentName; import android.content.ContentResolver; import android.content.Intent; import android.content.pm.ApplicationInfo; @@ -57,14 +59,21 @@ public class InstallStart extends Activity { private final boolean mLocalLOGV = false; - // TODO (sumedhsen): Replace with an Android Feature Flag once implemented - private static final boolean USE_PIA_V2 = false; - @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (USE_PIA_V2) { + mPackageManager = getPackageManager(); + if (usePiaV2()) { + Log.i(TAG, "Using Pia V2"); + + mPackageManager.setComponentEnabledSetting(new ComponentName(this, + com.android.packageinstaller.InstallEventReceiver.class), + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); + mPackageManager.setComponentEnabledSetting(new ComponentName(this, + com.android.packageinstaller.v2.model.InstallEventReceiver.class), + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0); + Intent piaV2 = new Intent(getIntent()); piaV2.putExtra(InstallLaunch.EXTRA_CALLING_PKG_NAME, getCallingPackage()); piaV2.putExtra(InstallLaunch.EXTRA_CALLING_PKG_UID, getLaunchedFromUid()); @@ -74,7 +83,6 @@ public class InstallStart extends Activity { finish(); return; } - mPackageManager = getPackageManager(); mUserManager = getSystemService(UserManager.class); Intent intent = getIntent(); diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/UninstallerActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/UninstallerActivity.java index 34062a4cbde6..ba627e9e9202 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/UninstallerActivity.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/UninstallerActivity.java @@ -17,8 +17,8 @@ package com.android.packageinstaller; import static android.app.AppOpsManager.MODE_ALLOWED; +import static android.content.pm.Flags.usePiaV2; import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; - import static com.android.packageinstaller.PackageUtil.getMaxTargetSdkVersionForUid; import android.Manifest; @@ -81,9 +81,6 @@ public class UninstallerActivity extends Activity { private String mPackageName; private DialogInfo mDialogInfo; - // TODO (sumedhsen): Replace with an Android Feature Flag once implemented - private static final boolean USE_PIA_V2 = false; - @Override public void onCreate(Bundle icicle) { getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); @@ -92,7 +89,18 @@ public class UninstallerActivity extends Activity { // be stale, if e.g. the app was uninstalled while the activity was destroyed. super.onCreate(null); - if (USE_PIA_V2 && !isTv()) { + if (usePiaV2() && !isTv()) { + Log.i(TAG, "Using Pia V2"); + + PackageManager pm = getPackageManager(); + pm.setComponentEnabledSetting( + new ComponentName(this, com.android.packageinstaller.UninstallEventReceiver.class), + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); + pm.setComponentEnabledSetting( + new ComponentName(this, + com.android.packageinstaller.v2.model.UninstallEventReceiver.class), + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0); + boolean returnResult = getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false); Intent piaV2 = new Intent(getIntent()); piaV2.putExtra(UninstallLaunch.EXTRA_CALLING_PKG_UID, getLaunchedFromUid()); |