Search in sources :

Example 36 with PackageUserKey

use of com.android.launcher3.util.PackageUserKey in project android_packages_apps_Trebuchet by LineageOS.

the class GridSizeMigrationTask method getValidPackages.

protected static HashSet<String> getValidPackages(Context context) {
    // Initialize list of valid packages. This contain all the packages which are already on
    // the device and packages which are being installed. Any item which doesn't belong to
    // this set is removed.
    // Since the loader removes such items anyway, removing these items here doesn't cause
    // any extra data loss and gives us more free space on the grid for better migration.
    HashSet<String> validPackages = new HashSet<>();
    for (PackageInfo info : context.getPackageManager().getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES)) {
        validPackages.add(info.packageName);
    }
    InstallSessionHelper.INSTANCE.get(context).getActiveSessions().keySet().forEach(packageUserKey -> validPackages.add(packageUserKey.mPackageName));
    return validPackages;
}
Also used : PackageInfo(android.content.pm.PackageInfo) Utilities.getPointString(com.android.launcher3.Utilities.getPointString) HashSet(java.util.HashSet)

Example 37 with PackageUserKey

use of com.android.launcher3.util.PackageUserKey in project android_packages_apps_Trebuchet by LineageOS.

the class InstallSessionTracker method onFinished.

@Override
public void onFinished(int sessionId, boolean success) {
    // For a finished session, we can't get the session info. So use the
    // packageName from our local cache.
    SparseArray<PackageUserKey> activeSessions = getActiveSessionMap();
    PackageUserKey key = activeSessions.get(sessionId);
    activeSessions.remove(sessionId);
    if (key != null && key.mPackageName != null) {
        String packageName = key.mPackageName;
        PackageInstallInfo info = PackageInstallInfo.fromState(success ? STATUS_INSTALLED : STATUS_FAILED, packageName, key.mUser);
        mCallback.onPackageStateChanged(info);
        if (!success && mInstallerCompat.promiseIconAddedForId(sessionId)) {
            mCallback.onSessionFailure(packageName, key.mUser);
            // If it is successful, the id is removed in the the package added flow.
            mInstallerCompat.removePromiseIconId(sessionId);
        }
    }
}
Also used : PackageUserKey(com.android.launcher3.util.PackageUserKey)

Example 38 with PackageUserKey

use of com.android.launcher3.util.PackageUserKey in project Neo-Launcher by NeoApplications.

the class Workspace method updateNotificationDots.

public void updateNotificationDots(Predicate<PackageUserKey> updatedDots) {
    final PackageUserKey packageUserKey = new PackageUserKey(null, null);
    Predicate<ItemInfo> matcher = info -> !packageUserKey.updateFromItemInfo(info) || updatedDots.test(packageUserKey);
    ItemOperator op = (info, v) -> {
        if (info instanceof WorkspaceItemInfo && v instanceof BubbleTextView) {
            if (matcher.test(info)) {
                ((BubbleTextView) v).applyDotState(info, true);
            }
        } else if (info instanceof FolderInfo && v instanceof FolderIcon) {
            FolderInfo fi = (FolderInfo) info;
            if (fi.contents.stream().anyMatch(matcher)) {
                FolderDotInfo folderDotInfo = new FolderDotInfo();
                for (WorkspaceItemInfo si : fi.contents) {
                    folderDotInfo.addDotInfo(mLauncher.getDotInfoForItem(si));
                }
                ((FolderIcon) v).setDotInfo(folderDotInfo);
            }
        }
        // process all the shortcuts
        return false;
    };
    mapOverItems(op);
    Folder folder = Folder.getOpen(mLauncher);
    if (folder != null) {
        folder.iterateOverItems(op);
    }
}
Also used : WorkspaceAccessibilityHelper(com.android.launcher3.accessibility.WorkspaceAccessibilityHelper) Rect(android.graphics.Rect) SPRING_LOADED_EXIT_DELAY(com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_EXIT_DELAY) TestProtocol(com.android.launcher3.testing.TestProtocol) PendingAddWidgetInfo(com.android.launcher3.widget.PendingAddWidgetInfo) Animator(android.animation.Animator) AppWidgetProviderInfo(android.appwidget.AppWidgetProviderInfo) Drawable(android.graphics.drawable.Drawable) ProviderChangedListener(com.android.launcher3.LauncherAppWidgetHost.ProviderChangedListener) WallpaperManager(android.app.WallpaperManager) IBinder(android.os.IBinder) FolderDotInfo(com.android.launcher3.dot.FolderDotInfo) SPRING_LOADED(com.android.launcher3.LauncherState.SPRING_LOADED) LayoutTransition(android.animation.LayoutTransition) AttributeSet(android.util.AttributeSet) Interpolators(com.android.launcher3.anim.Interpolators) Handler(android.os.Handler) View(android.view.View) Target(com.android.launcher3.userevent.nano.LauncherLogProto.Target) Canvas(android.graphics.Canvas) PreloadIconDrawable(com.android.launcher3.graphics.PreloadIconDrawable) OmegaLauncher(com.saggitt.omega.OmegaLauncher) RotationMode(com.android.launcher3.graphics.RotationMode) Log(android.util.Log) ShortcutDragPreviewProvider(com.android.launcher3.shortcuts.ShortcutDragPreviewProvider) Predicate(java.util.function.Predicate) ObjectAnimator(android.animation.ObjectAnimator) WallpaperOffsetInterpolator(com.android.launcher3.util.WallpaperOffsetInterpolator) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) PendingAppWidgetHostView(com.android.launcher3.widget.PendingAppWidgetHostView) ViewGroup(android.view.ViewGroup) DragOptions(com.android.launcher3.dragndrop.DragOptions) SPRING_LOADED_TRANSITION_MS(com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_TRANSITION_MS) SparseArray(android.util.SparseArray) AnimatorSetBuilder(com.android.launcher3.anim.AnimatorSetBuilder) ALL_APPS(com.android.launcher3.LauncherState.ALL_APPS) Message(android.os.Message) LauncherAppWidgetHostView(com.android.launcher3.widget.LauncherAppWidgetHostView) ItemInfoMatcher(com.android.launcher3.util.ItemInfoMatcher) OVERVIEW_TRANSITION_MS(com.android.launcher3.LauncherAnimUtils.OVERVIEW_TRANSITION_MS) NORMAL(com.android.launcher3.LauncherState.NORMAL) ALPHA_INDEX_OVERLAY(com.android.launcher3.dragndrop.DragLayer.ALPHA_INDEX_OVERLAY) AccessibleDragListenerAdapter(com.android.launcher3.accessibility.AccessibleDragListenerAdapter) Folder(com.android.launcher3.folder.Folder) Context(android.content.Context) AccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo) AnimatorUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener) FolderIcon(com.android.launcher3.folder.FolderIcon) UserEventDispatcher(com.android.launcher3.logging.UserEventDispatcher) ITEM_TYPE_APPLICATION(com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION) SpringLoadedDragController(com.android.launcher3.dragndrop.SpringLoadedDragController) ArrayList(java.util.ArrayList) PopupContainerWithArrow(com.android.launcher3.popup.PopupContainerWithArrow) HashSet(java.util.HashSet) SuppressLint(android.annotation.SuppressLint) PreviewBackground(com.android.launcher3.folder.PreviewBackground) AppWidgetHostView(android.appwidget.AppWidgetHostView) MotionEvent(android.view.MotionEvent) UserHandle(android.os.UserHandle) Toast(android.widget.Toast) DragLayer(com.android.launcher3.dragndrop.DragLayer) Executors(com.android.launcher3.util.Executors) IntArray(com.android.launcher3.util.IntArray) ADAPTIVE_ICON_WINDOW_ANIM(com.android.launcher3.config.FeatureFlags.ADAPTIVE_ICON_WINDOW_ANIM) Parcelable(android.os.Parcelable) Action(com.android.launcher3.userevent.nano.LauncherLogProto.Action) ContainerType(com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType) LayoutInflater(android.view.LayoutInflater) AnimationConfig(com.android.launcher3.LauncherStateManager.AnimationConfig) DragController(com.android.launcher3.dragndrop.DragController) PackageUserKey(com.android.launcher3.util.PackageUserKey) Point(android.graphics.Point) TextUtils(android.text.TextUtils) FeatureFlags(com.android.launcher3.config.FeatureFlags) AppWidgetManagerCompat(com.android.launcher3.compat.AppWidgetManagerCompat) PendingAddShortcutInfo(com.android.launcher3.widget.PendingAddShortcutInfo) Bitmap(android.graphics.Bitmap) LauncherOverlay(com.android.launcher3.Launcher.LauncherOverlay) WorkspacePageIndicator(com.android.launcher3.pageindicators.WorkspacePageIndicator) ViewTreeObserver(android.view.ViewTreeObserver) WorkspaceTouchListener(com.android.launcher3.touch.WorkspaceTouchListener) IntSparseArrayMap(com.android.launcher3.util.IntSparseArrayMap) Thunk(com.android.launcher3.util.Thunk) DragPreviewProvider(com.android.launcher3.graphics.DragPreviewProvider) DragView(com.android.launcher3.dragndrop.DragView) OmegaBackgroundView(com.saggitt.omega.views.OmegaBackgroundView) ValueAnimator(android.animation.ValueAnimator) Resources(android.content.res.Resources) FolderIcon(com.android.launcher3.folder.FolderIcon) PackageUserKey(com.android.launcher3.util.PackageUserKey) FolderDotInfo(com.android.launcher3.dot.FolderDotInfo) Folder(com.android.launcher3.folder.Folder)

Example 39 with PackageUserKey

use of com.android.launcher3.util.PackageUserKey in project Neo-Launcher by NeoApplications.

the class WidgetPreviewLoader method removeObsoletePreviews.

/**
 * Updates the persistent DB:
 *   1. Any preview generated for an old package version is removed
 *   2. Any preview for an absent package is removed
 * This ensures that we remove entries for packages which changed while the launcher was dead.
 *
 * @param packageUser if provided, specifies that list only contains previews for the
 *                    given package/user, otherwise the list contains all previews
 */
public void removeObsoletePreviews(ArrayList<? extends ComponentKey> list, @Nullable PackageUserKey packageUser) {
    Preconditions.assertWorkerThread();
    LongSparseArray<HashSet<String>> validPackages = new LongSparseArray<>();
    for (ComponentKey key : list) {
        final long userId = mUserManager.getSerialNumberForUser(key.user);
        HashSet<String> packages = validPackages.get(userId);
        if (packages == null) {
            packages = new HashSet<>();
            validPackages.put(userId, packages);
        }
        packages.add(key.componentName.getPackageName());
    }
    LongSparseArray<HashSet<String>> packagesToDelete = new LongSparseArray<>();
    long passedUserId = packageUser == null ? 0 : mUserManager.getSerialNumberForUser(packageUser.mUser);
    Cursor c = null;
    try {
        c = mDb.query(new String[] { CacheDb.COLUMN_USER, CacheDb.COLUMN_PACKAGE, CacheDb.COLUMN_LAST_UPDATED, CacheDb.COLUMN_VERSION }, null, null);
        while (c.moveToNext()) {
            long userId = c.getLong(0);
            String pkg = c.getString(1);
            long lastUpdated = c.getLong(2);
            long version = c.getLong(3);
            if (packageUser != null && (!pkg.equals(packageUser.mPackageName) || userId != passedUserId)) {
                // This preview is associated with a different package/user, no need to remove.
                continue;
            }
            HashSet<String> packages = validPackages.get(userId);
            if (packages != null && packages.contains(pkg)) {
                long[] versions = getPackageVersion(pkg);
                if (versions[0] == version && versions[1] == lastUpdated) {
                    // Every thing checks out
                    continue;
                }
            }
            // We need to delete this package.
            packages = packagesToDelete.get(userId);
            if (packages == null) {
                packages = new HashSet<>();
                packagesToDelete.put(userId, packages);
            }
            packages.add(pkg);
        }
        for (int i = 0; i < packagesToDelete.size(); i++) {
            long userId = packagesToDelete.keyAt(i);
            UserHandle user = mUserManager.getUserForSerialNumber(userId);
            for (String pkg : packagesToDelete.valueAt(i)) {
                removePackage(pkg, user, userId);
            }
        }
    } catch (SQLException e) {
        Log.e(TAG, "Error updating widget previews", e);
    } finally {
        if (c != null) {
            c.close();
        }
    }
}
Also used : LongSparseArray(android.util.LongSparseArray) SQLException(android.database.SQLException) ComponentKey(com.android.launcher3.util.ComponentKey) Cursor(android.database.Cursor) Paint(android.graphics.Paint) UserHandle(android.os.UserHandle) HashSet(java.util.HashSet)

Example 40 with PackageUserKey

use of com.android.launcher3.util.PackageUserKey in project Neo-Launcher by NeoApplications.

the class AppWidgetManagerCompatVL method getAllProviders.

@Override
public List<AppWidgetProviderInfo> getAllProviders(@Nullable PackageUserKey packageUser) {
    if (FeatureFlags.GO_DISABLE_WIDGETS) {
        return Collections.emptyList();
    }
    if (packageUser == null) {
        ArrayList<AppWidgetProviderInfo> providers = new ArrayList<>();
        for (UserHandle user : mUserManager.getUserProfiles()) {
            providers.addAll(mAppWidgetManager.getInstalledProvidersForProfile(user));
        }
        Iterator<AppWidgetProviderInfo> iterator = providers.iterator();
        while (iterator.hasNext()) {
            if (isBlacklisted(iterator.next().provider.getPackageName())) {
                iterator.remove();
            }
        }
        if (FeatureFlags.ENABLE_CUSTOM_WIDGETS) {
            providers.addAll(CustomWidgetParser.getCustomWidgets(mContext));
        }
        return providers;
    }
    if (isBlacklisted(packageUser.mPackageName)) {
        return Collections.emptyList();
    }
    // Only get providers for the given package/user.
    List<AppWidgetProviderInfo> providers = new ArrayList<>(mAppWidgetManager.getInstalledProvidersForProfile(packageUser.mUser));
    Iterator<AppWidgetProviderInfo> iterator = providers.iterator();
    while (iterator.hasNext()) {
        if (!iterator.next().provider.getPackageName().equals(packageUser.mPackageName)) {
            iterator.remove();
        }
    }
    if (FeatureFlags.ENABLE_CUSTOM_WIDGETS && Process.myUserHandle().equals(packageUser.mUser) && mContext.getPackageName().equals(packageUser.mPackageName)) {
        providers.addAll(CustomWidgetParser.getCustomWidgets(mContext));
    }
    return providers;
}
Also used : UserHandle(android.os.UserHandle) CustomAppWidgetProviderInfo(com.android.launcher3.widget.custom.CustomAppWidgetProviderInfo) LauncherAppWidgetProviderInfo(com.android.launcher3.LauncherAppWidgetProviderInfo) AppWidgetProviderInfo(android.appwidget.AppWidgetProviderInfo) ArrayList(java.util.ArrayList)

Aggregations

PackageUserKey (com.android.launcher3.util.PackageUserKey)94 ArrayList (java.util.ArrayList)53 Context (android.content.Context)42 ComponentName (android.content.ComponentName)39 UserHandle (android.os.UserHandle)35 AppWidgetProviderInfo (android.appwidget.AppWidgetProviderInfo)31 HashMap (java.util.HashMap)31 HashSet (java.util.HashSet)31 List (java.util.List)29 WidgetManagerHelper (com.android.launcher3.widget.WidgetManagerHelper)26 IconCache (com.android.launcher3.icons.IconCache)24 LauncherAppWidgetInfo (com.android.launcher3.model.data.LauncherAppWidgetInfo)24 WidgetsListBaseEntry (com.android.launcher3.widget.model.WidgetsListBaseEntry)24 DotInfo (com.android.launcher3.dot.DotInfo)22 Log (android.util.Log)21 FeatureFlags (com.android.launcher3.config.FeatureFlags)21 PackageItemInfo (com.android.launcher3.model.data.PackageItemInfo)21 IntSet (com.android.launcher3.util.IntSet)21 Predicate (java.util.function.Predicate)21 Test (org.junit.Test)21