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

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

Merge "Fixing SDCard and package enabled state checks in PackageManagerHeler"...

Merge "Fixing SDCard and package enabled state checks in PackageManagerHeler" into ub-launcher3-dorval
parents 7a0010d2 ad2e91a2
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -981,7 +981,7 @@ public class LauncherModel extends BroadcastReceiver
                                            c.markDeleted("Unrestored app removed: " + targetPkg);
                                            continue;
                                        }
                                    } else if (pmHelper.isAppOnSdcard(targetPkg)) {
                                    } else if (pmHelper.isAppOnSdcard(targetPkg, c.user)) {
                                        // Package is present but not available.
                                        disabledState |= ShortcutInfo.FLAG_DISABLED_NOT_AVAILABLE;
                                        // Add the icon on the workspace anyway.
@@ -1032,8 +1032,7 @@ public class LauncherModel extends BroadcastReceiver
                                        info.iconBitmap = LauncherIcons
                                                .createShortcutIcon(pinnedShortcut, context);
                                        if (pmHelper.isAppSuspended(
                                                info.getTargetComponent().getPackageName(),
                                                info.user)) {
                                                pinnedShortcut.getPackage(), info.user)) {
                                            info.isDisabled |= ShortcutInfo.FLAG_DISABLED_SUSPENDED;
                                        }
                                        intent = info.intent;
@@ -1046,7 +1045,7 @@ public class LauncherModel extends BroadcastReceiver
                                    info = c.loadSimpleShortcut();

                                    // Shortcuts are only available on the primary profile
                                    if (pmHelper.isAppSuspended(targetPkg)) {
                                    if (pmHelper.isAppSuspended(targetPkg, c.user)) {
                                        disabledState |= ShortcutInfo.FLAG_DISABLED_SUSPENDED;
                                    }

+2 −1
Original line number Diff line number Diff line
@@ -73,7 +73,8 @@ public abstract class LauncherAppsCompat {
            UserHandle user);
    public abstract void startActivityForProfile(ComponentName component, UserHandle user,
            Rect sourceBounds, Bundle opts);
    public abstract ApplicationInfo getApplicationInfo(String packageName, UserHandle user);
    public abstract ApplicationInfo getApplicationInfo(
            String packageName, int flags, UserHandle user);
    public abstract void showAppDetailsForProfile(ComponentName component, UserHandle user);
    public abstract void addOnAppsChangedCallback(OnAppsChangedCallbackCompat listener);
    public abstract void removeOnAppsChangedCallback(OnAppsChangedCallbackCompat listener);
+23 −3
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.content.pm.ResolveInfo;
import android.content.pm.ShortcutInfo;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Process;
import android.os.UserHandle;

import com.android.launcher3.compat.ShortcutConfigActivityInfo.ShortcutConfigActivityInfoVL;
@@ -66,10 +67,29 @@ public class LauncherAppsCompatVL extends LauncherAppsCompat {
    }

    @Override
    public ApplicationInfo getApplicationInfo(String packageName, UserHandle user) {
        List<LauncherActivityInfo> activityList = mLauncherApps.getActivityList(packageName, user);
    public ApplicationInfo getApplicationInfo(String packageName, int flags, UserHandle user) {
        final boolean isPrimaryUser = Process.myUserHandle().equals(user);
        if (!isPrimaryUser && (flags == 0)) {
            // We are looking for an installed app on a secondary profile. Prior to O, the only
            // entry point for work profiles is through the LauncherActivity.
            List<LauncherActivityInfo> activityList =
                    mLauncherApps.getActivityList(packageName, user);
            return activityList.size() > 0 ? activityList.get(0).getApplicationInfo() : null;
        }
        try {
            ApplicationInfo info =
                    mContext.getPackageManager().getApplicationInfo(packageName, flags);
            // There is no way to check if the app is installed for managed profile. But for
            // primary profile, we can still have this check.
            if (isPrimaryUser && ((info.flags & ApplicationInfo.FLAG_INSTALLED) == 0)) {
                return null;
            }
            return info;
        } catch (PackageManager.NameNotFoundException e) {
            // Package not found
            return null;
        }
    }

    @Override
    public void showAppDetailsForProfile(ComponentName component, UserHandle user) {
+3 −2
Original line number Diff line number Diff line
@@ -35,8 +35,9 @@ public class LauncherAppsCompatVO extends LauncherAppsCompatVL {
    }

    @Override
    public ApplicationInfo getApplicationInfo(String packageName, UserHandle user) {
        return mLauncherApps.getApplicationInfo(packageName, 0, user);
    public ApplicationInfo getApplicationInfo(String packageName, int flags, UserHandle user) {
        ApplicationInfo info = mLauncherApps.getApplicationInfo(packageName, flags, user);
        return info == null || (info.flags & ApplicationInfo.FLAG_INSTALLED) == 0 ? null : info;
    }

    @Override
+1 −1
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ public class SdCardAvailableReceiver extends BroadcastReceiver {

            for (String pkg : new HashSet<>(entry.getValue())) {
                if (!launcherApps.isPackageEnabledForProfile(pkg, user)) {
                    if (pmHelper.isAppOnSdcard(pkg)) {
                    if (pmHelper.isAppOnSdcard(pkg, user)) {
                        packagesUnavailable.add(pkg);
                    } else {
                        packagesRemoved.add(pkg);
Loading