public void setPackageHidden(int userId, String packageName, boolean hidden) { PackageSetting ps = PackageCacheManager.getSetting(packageName); if (ps != null && VUserManagerService.get().exists(userId)) { ps.setHidden(userId, hidden); mPersistenceLayer.save(); } }
@Override public boolean isAppInstalledAsUser(int userId, String packageName) { if (packageName == null || !VUserManagerService.get().exists(userId)) { return false; } PackageSetting setting = PackageCacheManager.getSetting(packageName); if (setting == null) { return false; } return setting.isInstalled(userId); }
@Override public void scanApps() { if (mBooting) { return; } synchronized (this) { mBooting = true; mPersistenceLayer.read(); PrivilegeAppOptimizer.get().performOptimizeAllApps(); mBooting = false; } }
@Override public synchronized boolean installPackageAsUser(int userId, String packageName) { if (VUserManagerService.get().exists(userId)) { PackageSetting ps = PackageCacheManager.getSetting(packageName); if (ps != null) { if (!ps.isInstalled(userId)) { ps.setInstalled(userId, true); notifyAppInstalled(ps, userId); mPersistenceLayer.save(); return true; } } } return false; }
private PackageInfo generatePackageInfo(VPackage p, PackageSetting ps, int flags, int userId) { flags = updateFlagsNought(flags); PackageInfo packageInfo = PackageParserEx.generatePackageInfo(p, flags, ps.firstInstallTime, ps.lastUpdateTime, ps.readUserState(userId), userId); if (packageInfo != null) { return packageInfo; } return null; }
@Override public void onPersistenceFileDamage() { getPersistenceFile().delete(); VAppManagerService.get().restoreFactoryState(); } }
@Override public InstalledAppInfo getInstalledAppInfo(String packageName, int flags) { synchronized (PackageCacheManager.class) { if (packageName != null) { PackageSetting setting = PackageCacheManager.getSetting(packageName); if (setting != null) { return setting.getAppInfo(); } } return null; } }
@Override public synchronized boolean uninstallPackage(String packageName) { PackageSetting ps = PackageCacheManager.getSetting(packageName); if (ps != null) { uninstallPackageFully(ps); return true; } return false; }
public boolean isPackageLaunched(int userId, String packageName) { PackageSetting ps = PackageCacheManager.getSetting(packageName); return ps != null && ps.isLaunched(userId); }
public static void notifyBootFinish() { for (String pkg : Constants.PRIVILEGE_APP) { try { PrivilegeAppOptimizer.get().performOptimize(pkg, 0); } catch (Throwable ignored) { } } }
synchronized void loadPackage(PackageSetting setting) { if (!loadPackageInnerLocked(setting)) { cleanUpResidualFiles(setting); } }
@Override public void readPersistenceData(Parcel p) { int count = p.readInt(); while (count-- > 0) { PackageSetting setting = new PackageSetting(p); mService.loadPackage(setting); } }
@Override public int getUserHandle(int userSerialNumber) { synchronized (mPackagesLock) { for (int userId : mUserIds) { if (getUserInfoLocked(userId).serialNumber == userSerialNumber) return userId; } // Not found return -1; } }
@Override public Iterator<T> iterator() { FastIterator<T> it = mIterator; if (it == null) { it = new FastIterator<T>(mContents); mIterator = it; } else { it.mIndex = 0; } return it; }
@Override public void userStopped(int userId) { finishRemoveUser(userId); } @Override
void setUserState(int userId, boolean launched, boolean hidden, boolean installed) { PackageUserState state = modifyUserState(userId); state.launched = launched; state.hidden = hidden; state.installed = installed; }
@Override public void wipeUser(int userHandle) { checkManageUsersPermission("wipe user"); // TODO: }
private void readUserList() { synchronized (mPackagesLock) { readUserListLocked(); } }
@Override public boolean onStartJob(JobParameters params) { PrivilegeAppOptimizer.notifyBootFinish(); return true; }
@Override public VUserInfo getUserInfo(int userId) { //checkManageUsersPermission("query user"); synchronized (mPackagesLock) { return getUserInfoLocked(userId); } }