List of usage examples for android.os UserManager getUserForSerialNumber
public UserHandle getUserForSerialNumber(long serialNumber)
From source file:com.farmerbb.taskbar.activity.ContextMenuActivity.java
@TargetApi(Build.VERSION_CODES.N_MR1) private int getLauncherShortcuts() { LauncherApps launcherApps = (LauncherApps) getSystemService(LAUNCHER_APPS_SERVICE); if (launcherApps.hasShortcutHostPermission()) { UserManager userManager = (UserManager) getSystemService(USER_SERVICE); LauncherApps.ShortcutQuery query = new LauncherApps.ShortcutQuery(); query.setActivity(ComponentName.unflattenFromString(componentName)); query.setQueryFlags(// ww w . ja va 2 s .co m LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC | LauncherApps.ShortcutQuery.FLAG_MATCH_MANIFEST | LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED); shortcuts = launcherApps.getShortcuts(query, userManager.getUserForSerialNumber(userId)); if (shortcuts != null) return shortcuts.size(); } return 0; }
From source file:com.farmerbb.taskbar.activity.ContextMenuActivity.java
@SuppressWarnings("deprecation") @TargetApi(Build.VERSION_CODES.N_MR1)/*from w w w.j av a 2 s . co m*/ @Override public boolean onPreferenceClick(Preference p) { UserManager userManager = (UserManager) getSystemService(USER_SERVICE); LauncherApps launcherApps = (LauncherApps) getSystemService(LAUNCHER_APPS_SERVICE); boolean appIsValid = isStartButton || isOverflowMenu || !launcherApps.getActivityList(getIntent().getStringExtra("package_name"), userManager.getUserForSerialNumber(userId)).isEmpty(); if (appIsValid) switch (p.getKey()) { case "app_info": startFreeformActivity(); launcherApps.startAppDetailsActivity(ComponentName.unflattenFromString(componentName), userManager.getUserForSerialNumber(userId), null, null); showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "uninstall": if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInMultiWindowMode()) { Intent intent2 = new Intent(ContextMenuActivity.this, DummyActivity.class); intent2.putExtra("uninstall", packageName); intent2.putExtra("user_id", userId); startFreeformActivity(); startActivity(intent2); } else { startFreeformActivity(); Intent intent2 = new Intent(Intent.ACTION_DELETE, Uri.parse("package:" + packageName)); intent2.putExtra(Intent.EXTRA_USER, userManager.getUserForSerialNumber(userId)); try { startActivity(intent2); } catch (ActivityNotFoundException e) { /* Gracefully fail */ } } showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "open_taskbar_settings": startFreeformActivity(); Intent intent2 = new Intent(this, MainActivity.class); intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent2); showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "quit_taskbar": Intent quitIntent = new Intent("com.farmerbb.taskbar.QUIT"); quitIntent.setPackage(BuildConfig.APPLICATION_ID); sendBroadcast(quitIntent); showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "pin_app": PinnedBlockedApps pba = PinnedBlockedApps.getInstance(this); if (pba.isPinned(componentName)) pba.removePinnedApp(this, componentName); else { Intent intent = new Intent(); intent.setComponent(ComponentName.unflattenFromString(componentName)); LauncherActivityInfo appInfo = launcherApps.resolveActivity(intent, userManager.getUserForSerialNumber(userId)); if (appInfo != null) { AppEntry newEntry = new AppEntry(packageName, componentName, appName, IconCache.getInstance(this).getIcon(this, getPackageManager(), appInfo), true); newEntry.setUserId(userId); pba.addPinnedApp(this, newEntry); } } break; case "block_app": PinnedBlockedApps pba2 = PinnedBlockedApps.getInstance(this); if (pba2.isBlocked(componentName)) pba2.removeBlockedApp(this, componentName); else { pba2.addBlockedApp(this, new AppEntry(packageName, componentName, appName, null, false)); } break; case "show_window_sizes": getPreferenceScreen().removeAll(); addPreferencesFromResource(R.xml.pref_context_menu_window_size_list); findPreference("window_size_standard").setOnPreferenceClickListener(this); findPreference("window_size_large").setOnPreferenceClickListener(this); findPreference("window_size_fullscreen").setOnPreferenceClickListener(this); findPreference("window_size_half_left").setOnPreferenceClickListener(this); findPreference("window_size_half_right").setOnPreferenceClickListener(this); findPreference("window_size_phone_size").setOnPreferenceClickListener(this); SharedPreferences pref = U.getSharedPreferences(this); if (pref.getBoolean("save_window_sizes", true)) { String windowSizePref = SavedWindowSizes.getInstance(this).getWindowSize(this, packageName); CharSequence title = findPreference("window_size_" + windowSizePref).getTitle(); findPreference("window_size_" + windowSizePref).setTitle('\u2713' + " " + title); } if (U.isOPreview()) { U.showToast(this, R.string.window_sizes_not_available); } secondaryMenu = true; break; case "window_size_standard": case "window_size_large": case "window_size_fullscreen": case "window_size_half_left": case "window_size_half_right": case "window_size_phone_size": String windowSize = p.getKey().replace("window_size_", ""); SharedPreferences pref2 = U.getSharedPreferences(this); if (pref2.getBoolean("save_window_sizes", true)) { SavedWindowSizes.getInstance(this).setWindowSize(this, packageName, windowSize); } startFreeformActivity(); U.launchApp(getApplicationContext(), packageName, componentName, userId, windowSize, false, true); showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "app_shortcuts": getPreferenceScreen().removeAll(); generateShortcuts(); secondaryMenu = true; break; case "shortcut_1": case "shortcut_2": case "shortcut_3": case "shortcut_4": case "shortcut_5": U.startShortcut(getApplicationContext(), packageName, componentName, shortcuts.get(Integer.parseInt(p.getKey().replace("shortcut_", "")) - 1)); showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "start_menu_apps": startFreeformActivity(); Intent intent = null; SharedPreferences pref3 = U.getSharedPreferences(this); switch (pref3.getString("theme", "light")) { case "light": intent = new Intent(this, SelectAppActivity.class); break; case "dark": intent = new Intent(this, SelectAppActivityDark.class); break; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && pref3.getBoolean("freeform_hack", false) && intent != null && isInMultiWindowMode()) { intent.putExtra("no_shadow", true); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT); U.launchAppMaximized(getApplicationContext(), intent); } else startActivity(intent); showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "volume": AudioManager audio = (AudioManager) getSystemService(AUDIO_SERVICE); audio.adjustSuggestedStreamVolume(AudioManager.ADJUST_SAME, AudioManager.USE_DEFAULT_STREAM_TYPE, AudioManager.FLAG_SHOW_UI); showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "file_manager": Intent fileManagerIntent; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { startFreeformActivity(); fileManagerIntent = new Intent("android.provider.action.BROWSE"); } else { fileManagerIntent = new Intent("android.provider.action.BROWSE_DOCUMENT_ROOT"); fileManagerIntent.setComponent( ComponentName.unflattenFromString("com.android.documentsui/.DocumentsActivity")); } fileManagerIntent.addCategory(Intent.CATEGORY_DEFAULT); fileManagerIntent .setData(Uri.parse("content://com.android.externalstorage.documents/root/primary")); try { startActivity(fileManagerIntent); } catch (ActivityNotFoundException e) { U.showToast(this, R.string.lock_device_not_supported); } showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "system_settings": startFreeformActivity(); Intent settingsIntent = new Intent(Settings.ACTION_SETTINGS); try { startActivity(settingsIntent); } catch (ActivityNotFoundException e) { U.showToast(this, R.string.lock_device_not_supported); } showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "lock_device": U.lockDevice(this); showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "power_menu": U.sendAccessibilityAction(this, AccessibilityService.GLOBAL_ACTION_POWER_DIALOG); showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; case "change_wallpaper": Intent intent3 = Intent.createChooser(new Intent(Intent.ACTION_SET_WALLPAPER), getString(R.string.set_wallpaper)); intent3.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); U.launchAppMaximized(getApplicationContext(), intent3); showStartMenu = false; shouldHideTaskbar = true; contextMenuFix = false; break; } if (!secondaryMenu) finish(); return true; }
From source file:com.farmerbb.taskbar.receiver.ReceiveSettingsReceiver.java
@Override public void onReceive(Context context, Intent intent) { // Ignore this broadcast if this is the free version if (BuildConfig.APPLICATION_ID.equals(BuildConfig.PAID_APPLICATION_ID)) { // Get pinned and blocked apps PinnedBlockedApps pba = PinnedBlockedApps.getInstance(context); pba.clear(context);//from w w w .j a v a2s .c o m String[] pinnedAppsPackageNames = intent.getStringArrayExtra("pinned_apps_package_names"); String[] pinnedAppsComponentNames = intent.getStringArrayExtra("pinned_apps_component_names"); String[] pinnedAppsLabels = intent.getStringArrayExtra("pinned_apps_labels"); long[] pinnedAppsUserIds = intent.getLongArrayExtra("pinned_apps_user_ids"); UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); LauncherApps launcherApps = (LauncherApps) context.getSystemService(Context.LAUNCHER_APPS_SERVICE); if (pinnedAppsPackageNames != null && pinnedAppsComponentNames != null && pinnedAppsLabels != null) for (int i = 0; i < pinnedAppsPackageNames.length; i++) { Intent throwaway = new Intent(); throwaway.setComponent(ComponentName.unflattenFromString(pinnedAppsComponentNames[i])); long userId; if (pinnedAppsUserIds != null) userId = pinnedAppsUserIds[i]; else userId = userManager.getSerialNumberForUser(Process.myUserHandle()); AppEntry newEntry = new AppEntry(pinnedAppsPackageNames[i], pinnedAppsComponentNames[i], pinnedAppsLabels[i], IconCache.getInstance(context).getIcon(context, context.getPackageManager(), launcherApps.resolveActivity(throwaway, userManager.getUserForSerialNumber(userId))), true); newEntry.setUserId(userId); pba.addPinnedApp(context, newEntry); } String[] blockedAppsPackageNames = intent.getStringArrayExtra("blocked_apps_package_names"); String[] blockedAppsComponentNames = intent.getStringArrayExtra("blocked_apps_component_names"); String[] blockedAppsLabels = intent.getStringArrayExtra("blocked_apps_labels"); if (blockedAppsPackageNames != null && blockedAppsComponentNames != null && blockedAppsLabels != null) for (int i = 0; i < blockedAppsPackageNames.length; i++) { pba.addBlockedApp(context, new AppEntry(blockedAppsPackageNames[i], blockedAppsComponentNames[i], blockedAppsLabels[i], null, false)); } // Get blacklist Blacklist blacklist = Blacklist.getInstance(context); blacklist.clear(context); String[] blacklistPackageNames = intent.getStringArrayExtra("blacklist_package_names"); String[] blacklistLabels = intent.getStringArrayExtra("blacklist_labels"); if (blacklistPackageNames != null && blacklistLabels != null) for (int i = 0; i < blacklistPackageNames.length; i++) { blacklist.addBlockedApp(context, new BlacklistEntry(blacklistPackageNames[i], blacklistLabels[i])); } // Get top apps TopApps topApps = TopApps.getInstance(context); topApps.clear(context); String[] topAppsPackageNames = intent.getStringArrayExtra("top_apps_package_names"); String[] topAppsLabels = intent.getStringArrayExtra("top_apps_labels"); if (topAppsPackageNames != null && topAppsLabels != null) for (int i = 0; i < topAppsPackageNames.length; i++) { topApps.addTopApp(context, new BlacklistEntry(topAppsPackageNames[i], topAppsLabels[i])); } // Get saved window sizes if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { SavedWindowSizes savedWindowSizes = SavedWindowSizes.getInstance(context); savedWindowSizes.clear(context); String[] savedWindowSizesComponentNames = intent .getStringArrayExtra("saved_window_sizes_component_names"); String[] savedWindowSizesWindowSizes = intent .getStringArrayExtra("saved_window_sizes_window_sizes"); if (savedWindowSizesComponentNames != null && savedWindowSizesWindowSizes != null) for (int i = 0; i < savedWindowSizesComponentNames.length; i++) { savedWindowSizes.setWindowSize(context, savedWindowSizesComponentNames[i], savedWindowSizesWindowSizes[i]); } } // Get shared preferences String contents = intent.getStringExtra("preferences"); if (contents.length() > 0) try { File file = new File(context.getFilesDir().getParent() + "/shared_prefs/" + BuildConfig.APPLICATION_ID + "_preferences.xml"); FileOutputStream output = new FileOutputStream(file); output.write(contents.getBytes()); output.close(); } catch (IOException e) { /* Gracefully fail */ } try { File file = new File(context.getFilesDir() + File.separator + "imported_successfully"); if (file.createNewFile()) LocalBroadcastManager.getInstance(context) .sendBroadcast(new Intent("com.farmerbb.taskbar.IMPORT_FINISHED")); } catch (IOException e) { /* Gracefully fail */ } } }
From source file:com.farmerbb.taskbar.service.TaskbarService.java
@SuppressWarnings("Convert2streamapi") @TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1) private void updateRecentApps(final boolean firstRefresh) { SharedPreferences pref = U.getSharedPreferences(this); final PackageManager pm = getPackageManager(); final List<AppEntry> entries = new ArrayList<>(); List<LauncherActivityInfo> launcherAppCache = new ArrayList<>(); int maxNumOfEntries = U.getMaxNumOfEntries(this); int realNumOfPinnedApps = 0; boolean fullLength = pref.getBoolean("full_length", false); PinnedBlockedApps pba = PinnedBlockedApps.getInstance(this); List<AppEntry> pinnedApps = pba.getPinnedApps(); List<AppEntry> blockedApps = pba.getBlockedApps(); List<String> applicationIdsToRemove = new ArrayList<>(); // Filter out anything on the pinned/blocked apps lists if (pinnedApps.size() > 0) { UserManager userManager = (UserManager) getSystemService(USER_SERVICE); LauncherApps launcherApps = (LauncherApps) getSystemService(LAUNCHER_APPS_SERVICE); for (AppEntry entry : pinnedApps) { boolean packageEnabled = launcherApps.isPackageEnabled(entry.getPackageName(), userManager.getUserForSerialNumber(entry.getUserId(this))); if (packageEnabled) entries.add(entry);/* ww w. j a va2s . c o m*/ else realNumOfPinnedApps--; applicationIdsToRemove.add(entry.getPackageName()); } realNumOfPinnedApps = realNumOfPinnedApps + pinnedApps.size(); } if (blockedApps.size() > 0) { for (AppEntry entry : blockedApps) { applicationIdsToRemove.add(entry.getPackageName()); } } // Get list of all recently used apps List<AppEntry> usageStatsList = realNumOfPinnedApps < maxNumOfEntries ? getAppEntries() : new ArrayList<>(); if (usageStatsList.size() > 0 || realNumOfPinnedApps > 0 || fullLength) { if (realNumOfPinnedApps < maxNumOfEntries) { List<AppEntry> usageStatsList2 = new ArrayList<>(); List<AppEntry> usageStatsList3 = new ArrayList<>(); List<AppEntry> usageStatsList4 = new ArrayList<>(); List<AppEntry> usageStatsList5 = new ArrayList<>(); List<AppEntry> usageStatsList6; Intent homeIntent = new Intent(Intent.ACTION_MAIN); homeIntent.addCategory(Intent.CATEGORY_HOME); ResolveInfo defaultLauncher = pm.resolveActivity(homeIntent, PackageManager.MATCH_DEFAULT_ONLY); // Filter out apps without a launcher intent // Also filter out the current launcher, and Taskbar itself for (AppEntry packageInfo : usageStatsList) { if (hasLauncherIntent(packageInfo.getPackageName()) && !packageInfo.getPackageName().contains(BuildConfig.BASE_APPLICATION_ID) && !packageInfo.getPackageName().equals(defaultLauncher.activityInfo.packageName)) usageStatsList2.add(packageInfo); } // Filter out apps that don't fall within our current search interval for (AppEntry stats : usageStatsList2) { if (stats.getLastTimeUsed() > searchInterval || runningAppsOnly) usageStatsList3.add(stats); } // Sort apps by either most recently used, or most time used if (!runningAppsOnly) { if (sortOrder.contains("most_used")) { Collections.sort(usageStatsList3, (us1, us2) -> Long.compare(us2.getTotalTimeInForeground(), us1.getTotalTimeInForeground())); } else { Collections.sort(usageStatsList3, (us1, us2) -> Long.compare(us2.getLastTimeUsed(), us1.getLastTimeUsed())); } } // Filter out any duplicate entries List<String> applicationIds = new ArrayList<>(); for (AppEntry stats : usageStatsList3) { if (!applicationIds.contains(stats.getPackageName())) { usageStatsList4.add(stats); applicationIds.add(stats.getPackageName()); } } // Filter out the currently running foreground app, if requested by the user if (pref.getBoolean("hide_foreground", false)) { UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService( USAGE_STATS_SERVICE); UsageEvents events = mUsageStatsManager.queryEvents(searchInterval, System.currentTimeMillis()); UsageEvents.Event eventCache = new UsageEvents.Event(); String currentForegroundApp = null; while (events.hasNextEvent()) { events.getNextEvent(eventCache); if (eventCache.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) { if (!(eventCache.getPackageName().contains(BuildConfig.BASE_APPLICATION_ID) && !eventCache.getClassName().equals(MainActivity.class.getCanonicalName()) && !eventCache.getClassName().equals(HomeActivity.class.getCanonicalName()) && !eventCache.getClassName() .equals(InvisibleActivityFreeform.class.getCanonicalName()))) currentForegroundApp = eventCache.getPackageName(); } } if (!applicationIdsToRemove.contains(currentForegroundApp)) applicationIdsToRemove.add(currentForegroundApp); } for (AppEntry stats : usageStatsList4) { if (!applicationIdsToRemove.contains(stats.getPackageName())) { usageStatsList5.add(stats); } } // Truncate list to a maximum length if (usageStatsList5.size() > maxNumOfEntries) usageStatsList6 = usageStatsList5.subList(0, maxNumOfEntries); else usageStatsList6 = usageStatsList5; // Determine if we need to reverse the order boolean needToReverseOrder; switch (U.getTaskbarPosition(this)) { case "bottom_right": case "top_right": needToReverseOrder = sortOrder.contains("false"); break; default: needToReverseOrder = sortOrder.contains("true"); break; } if (needToReverseOrder) { Collections.reverse(usageStatsList6); } // Generate the AppEntries for TaskbarAdapter int number = usageStatsList6.size() == maxNumOfEntries ? usageStatsList6.size() - realNumOfPinnedApps : usageStatsList6.size(); UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE); LauncherApps launcherApps = (LauncherApps) getSystemService(Context.LAUNCHER_APPS_SERVICE); final List<UserHandle> userHandles = userManager.getUserProfiles(); for (int i = 0; i < number; i++) { for (UserHandle handle : userHandles) { String packageName = usageStatsList6.get(i).getPackageName(); List<LauncherActivityInfo> list = launcherApps.getActivityList(packageName, handle); if (!list.isEmpty()) { // Google App workaround if (!packageName.equals("com.google.android.googlequicksearchbox")) launcherAppCache.add(list.get(0)); else { boolean added = false; for (LauncherActivityInfo info : list) { if (info.getName() .equals("com.google.android.googlequicksearchbox.SearchActivity")) { launcherAppCache.add(info); added = true; } } if (!added) launcherAppCache.add(list.get(0)); } AppEntry newEntry = new AppEntry(packageName, null, null, null, false); newEntry.setUserId(userManager.getSerialNumberForUser(handle)); entries.add(newEntry); break; } } } } while (entries.size() > maxNumOfEntries) { try { entries.remove(entries.size() - 1); launcherAppCache.remove(launcherAppCache.size() - 1); } catch (ArrayIndexOutOfBoundsException e) { /* Gracefully fail */ } } // Determine if we need to reverse the order again if (U.getTaskbarPosition(this).contains("vertical")) { Collections.reverse(entries); Collections.reverse(launcherAppCache); } // Now that we've generated the list of apps, // we need to determine if we need to redraw the Taskbar or not boolean shouldRedrawTaskbar = firstRefresh; List<String> finalApplicationIds = new ArrayList<>(); for (AppEntry entry : entries) { finalApplicationIds.add(entry.getPackageName()); } if (finalApplicationIds.size() != currentTaskbarIds.size() || numOfPinnedApps != realNumOfPinnedApps) shouldRedrawTaskbar = true; else { for (int i = 0; i < finalApplicationIds.size(); i++) { if (!finalApplicationIds.get(i).equals(currentTaskbarIds.get(i))) { shouldRedrawTaskbar = true; break; } } } if (shouldRedrawTaskbar) { currentTaskbarIds = finalApplicationIds; numOfPinnedApps = realNumOfPinnedApps; UserManager userManager = (UserManager) getSystemService(USER_SERVICE); int launcherAppCachePos = -1; for (int i = 0; i < entries.size(); i++) { if (entries.get(i).getComponentName() == null) { launcherAppCachePos++; LauncherActivityInfo appInfo = launcherAppCache.get(launcherAppCachePos); String packageName = entries.get(i).getPackageName(); entries.remove(i); AppEntry newEntry = new AppEntry(packageName, appInfo.getComponentName().flattenToString(), appInfo.getLabel().toString(), IconCache.getInstance(TaskbarService.this) .getIcon(TaskbarService.this, pm, appInfo), false); newEntry.setUserId(userManager.getSerialNumberForUser(appInfo.getUser())); entries.add(i, newEntry); } } final int numOfEntries = Math.min(entries.size(), maxNumOfEntries); handler.post(() -> { if (numOfEntries > 0 || fullLength) { ViewGroup.LayoutParams params = scrollView.getLayoutParams(); DisplayMetrics metrics = getResources().getDisplayMetrics(); int recentsSize = getResources().getDimensionPixelSize(R.dimen.icon_size) * numOfEntries; float maxRecentsSize = fullLength ? Float.MAX_VALUE : recentsSize; if (U.getTaskbarPosition(TaskbarService.this).contains("vertical")) { int maxScreenSize = metrics.heightPixels - U.getStatusBarHeight(TaskbarService.this) - U.getBaseTaskbarSize(TaskbarService.this); params.height = (int) Math.min(maxRecentsSize, maxScreenSize) + getResources().getDimensionPixelSize(R.dimen.divider_size); if (fullLength && U.getTaskbarPosition(this).contains("bottom")) { try { Space whitespace = (Space) layout.findViewById(R.id.whitespace); ViewGroup.LayoutParams params2 = whitespace.getLayoutParams(); params2.height = maxScreenSize - recentsSize; whitespace.setLayoutParams(params2); } catch (NullPointerException e) { /* Gracefully fail */ } } } else { int maxScreenSize = metrics.widthPixels - U.getBaseTaskbarSize(TaskbarService.this); params.width = (int) Math.min(maxRecentsSize, maxScreenSize) + getResources().getDimensionPixelSize(R.dimen.divider_size); if (fullLength && U.getTaskbarPosition(this).contains("right")) { try { Space whitespace = (Space) layout.findViewById(R.id.whitespace); ViewGroup.LayoutParams params2 = whitespace.getLayoutParams(); params2.width = maxScreenSize - recentsSize; whitespace.setLayoutParams(params2); } catch (NullPointerException e) { /* Gracefully fail */ } } } scrollView.setLayoutParams(params); taskbar.removeAllViews(); for (int i = 0; i < entries.size(); i++) { taskbar.addView(getView(entries, i)); } isShowingRecents = true; if (shouldRefreshRecents && scrollView.getVisibility() != View.VISIBLE) { if (firstRefresh) scrollView.setVisibility(View.INVISIBLE); else scrollView.setVisibility(View.VISIBLE); } if (firstRefresh && scrollView.getVisibility() != View.VISIBLE) new Handler().post(() -> { switch (U.getTaskbarPosition(TaskbarService.this)) { case "bottom_left": case "bottom_right": case "top_left": case "top_right": if (sortOrder.contains("false")) scrollView.scrollTo(0, 0); else if (sortOrder.contains("true")) scrollView.scrollTo(taskbar.getWidth(), taskbar.getHeight()); break; case "bottom_vertical_left": case "bottom_vertical_right": case "top_vertical_left": case "top_vertical_right": if (sortOrder.contains("false")) scrollView.scrollTo(taskbar.getWidth(), taskbar.getHeight()); else if (sortOrder.contains("true")) scrollView.scrollTo(0, 0); break; } if (shouldRefreshRecents) { scrollView.setVisibility(View.VISIBLE); } }); } else { isShowingRecents = false; scrollView.setVisibility(View.GONE); } }); } } else if (firstRefresh || currentTaskbarIds.size() > 0) { currentTaskbarIds.clear(); handler.post(() -> { isShowingRecents = false; scrollView.setVisibility(View.GONE); }); } }