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

Commit 2c899574 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Uninstaller: Background uninstalls for all users"

parents c09ed467 23cfcc12
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ public class UninstallFinish extends BroadcastReceiver {
    private static final String LOG_TAG = UninstallFinish.class.getSimpleName();

    static final String EXTRA_UNINSTALL_ID = "com.android.packageinstaller.extra.UNINSTALL_ID";
    static final String EXTRA_APP_INFO = "com.android.packageinstaller.extra.APP_INFO";
    static final String EXTRA_APP_LABEL = "com.android.packageinstaller.extra.APP_LABEL";

    @Override
@@ -60,8 +59,10 @@ public class UninstallFinish extends BroadcastReceiver {
        }

        int uninstallId = intent.getIntExtra(EXTRA_UNINSTALL_ID, 0);
        ApplicationInfo appInfo = intent.getParcelableExtra(EXTRA_APP_INFO);
        ApplicationInfo appInfo = intent.getParcelableExtra(
                PackageUtil.INTENT_ATTR_APPLICATION_INFO);
        String appLabel = intent.getStringExtra(EXTRA_APP_LABEL);
        boolean allUsers = intent.getBooleanExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, false);

        NotificationManager notificationManager =
                context.getSystemService(NotificationManager.class);
@@ -152,7 +153,16 @@ public class UninstallFinish extends BroadcastReceiver {
                                            + returnCode + " no blocking user");
                        } else if (blockingUserId == UserHandle.USER_SYSTEM) {
                            setBigText(uninstallFailedNotification,
                                    context.getString(R.string.uninstall_blocked_profile_owner));
                                    context.getString(R.string.uninstall_blocked_device_owner));
                        } else {
                            if (allUsers) {
                                setBigText(uninstallFailedNotification,
                                        context.getString(
                                                R.string.uninstall_all_blocked_profile_owner));
                            } else {
                                setBigText(uninstallFailedNotification, context.getString(
                                        R.string.uninstall_blocked_profile_owner));
                            }
                        }
                        break;
                    }
+15 −4
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.packageinstaller;

import android.app.Activity;
import android.app.ActivityThread;
import android.app.DialogFragment;
import android.app.Fragment;
import android.app.FragmentTransaction;
@@ -197,7 +198,9 @@ public class UninstallerActivity extends Activity {

    public void startUninstallProgress() {
        boolean returnResult = getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false);
        if (isTv() || returnResult || mDialogInfo.allUsers || mDialogInfo.callback != null) {

        if (isTv() || returnResult || mDialogInfo.callback != null
                || getCallingActivity() != null) {
            Intent newIntent = new Intent(Intent.ACTION_VIEW);
            newIntent.putExtra(Intent.EXTRA_USER, mDialogInfo.user);
            newIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, mDialogInfo.allUsers);
@@ -216,7 +219,9 @@ public class UninstallerActivity extends Activity {
            CharSequence label = mDialogInfo.appInfo.loadLabel(getPackageManager());

            Intent broadcastIntent = new Intent(this, UninstallFinish.class);
            broadcastIntent.putExtra(UninstallFinish.EXTRA_APP_INFO, mDialogInfo.appInfo);

            broadcastIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, mDialogInfo.allUsers);
            broadcastIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO, mDialogInfo.appInfo);
            broadcastIntent.putExtra(UninstallFinish.EXTRA_APP_LABEL, label);
            broadcastIntent.putExtra(UninstallFinish.EXTRA_UNINSTALL_ID, uninstallId);

@@ -232,8 +237,14 @@ public class UninstallerActivity extends Activity {
            getSystemService(NotificationManager.class).notify(uninstallId,
                    uninstallingNotification);

            getPackageManager().getPackageInstaller().uninstall(mDialogInfo.appInfo.packageName,
                    pendingIntent.getIntentSender());
            try {
                ActivityThread.getPackageManager().getPackageInstaller().uninstall(
                        mDialogInfo.appInfo.packageName, getPackageName(),
                        mDialogInfo.allUsers ? PackageManager.DELETE_ALL_USERS : 0,
                        pendingIntent.getIntentSender(), mDialogInfo.user.getIdentifier());
            } catch (RemoteException e) {
                e.rethrowFromSystemServer();
            }
        }
    }