public int getAppId(String packageName) { PackageSetting setting = PackageCacheManager.getSetting(packageName); return setting != null ? setting.appId : -1; }
@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 Resources getResources(Context context, ApplicationInfo appInfo) throws Exception { PackageSetting ps = PackageCacheManager.getSetting(appInfo.packageName); if (ps != null) { AssetManager assets = mirror.android.content.res.AssetManager.ctor.newInstance(); mirror.android.content.res.AssetManager.addAssetPath.call(assets, ps.apkPath); Resources hostRes = context.getResources(); return new Resources(assets, hostRes.getDisplayMetrics(), hostRes.getConfiguration()); } return null; } }
@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); }
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 int[] getPackageInstalledUsers(String packageName) { PackageSetting ps = PackageCacheManager.getSetting(packageName); if (ps != null) { IntArray installedUsers = new IntArray(5); int[] userIds = VUserManagerService.get().getUserIds(); for (int userId : userIds) { if (ps.readUserState(userId).installed) { installedUsers.add(userId); } } return installedUsers.getAll(); } return new int[0]; }
@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; }
ProcessRecord startProcessIfNeedLocked(String processName, int userId, String packageName) { if (VActivityManagerService.get().getFreeStubCount() < 3) { // run GC killAllApps(); } PackageSetting ps = PackageCacheManager.getSetting(packageName); ApplicationInfo info = VPackageManagerService.get().getApplicationInfo(packageName, 0, userId); if (ps == null || info == null) { return null; } if (!ps.isLaunched(userId)) { sendFirstLaunchBroadcast(ps, userId); ps.setLaunched(userId, true); VAppManagerService.get().savePersistenceData(); } int uid = VUserHandle.getUid(userId, ps.appId); ProcessRecord app = mProcessNames.get(processName, uid); if (app != null && app.client.asBinder().pingBinder()) { return app; } int vpid = queryFreeStubProcessLocked(); if (vpid == -1) { return null; } app = performStartProcessLocked(uid, vpid, info, processName); if (app != null) { app.pkgList.add(info.packageName); } return app; }
@Override public boolean clearPackageAsUser(int userId, String packageName) throws RemoteException { if (!VUserManagerService.get().exists(userId)) { return false; } PackageSetting ps = PackageCacheManager.getSetting(packageName); if (ps != null) { int[] userIds = getPackageInstalledUsers(packageName); if (!ArrayUtils.contains(userIds, userId)) { return false; } if (userIds.length == 1) { clearPackage(packageName); } else { // Just hidden it VActivityManagerService.get().killAppByPkg(packageName, userId); ps.setInstalled(userId, false); mPersistenceLayer.save(); FileUtils.deleteDir(VEnvironment.getDataUserPackageDirectory(userId, packageName)); FileUtils.deleteDir(VEnvironment.getVirtualPrivateStorageDir(userId, packageName)); } return true; } return false; }
@Override public synchronized boolean uninstallPackageAsUser(String packageName, int userId) { if (!VUserManagerService.get().exists(userId)) { return false; } PackageSetting ps = PackageCacheManager.getSetting(packageName); if (ps != null) { int[] userIds = getPackageInstalledUsers(packageName); if (!ArrayUtils.contains(userIds, userId)) { return false; } if (userIds.length == 1) { uninstallPackageFully(ps); } else { // Just hidden it VActivityManagerService.get().killAppByPkg(packageName, userId); ps.setInstalled(userId, false); notifyAppUninstalled(ps, userId); mPersistenceLayer.save(); FileUtils.deleteDir(VEnvironment.getDataUserPackageDirectory(userId, packageName)); FileUtils.deleteDir(VEnvironment.getVirtualPrivateStorageDir(userId, packageName)); } return true; } return false; }
public int getAppId(String packageName) { PackageSetting setting = PackageCacheManager.getSetting(packageName); return setting != null ? setting.appId : -1; }
@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); }
@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; } }
public Resources getResources(Context context, ApplicationInfo appInfo) throws Exception { PackageSetting ps = PackageCacheManager.getSetting(appInfo.packageName); if (ps != null) { AssetManager assets = mirror.android.content.res.AssetManager.ctor.newInstance(); mirror.android.content.res.AssetManager.addAssetPath.call(assets, ps.apkPath); Resources hostRes = context.getResources(); return new Resources(assets, hostRes.getDisplayMetrics(), hostRes.getConfiguration()); } return null; } }
@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); }
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(); } }