@Override public void setVirtualStorage(String packageName, int userId, String vsPath) throws RemoteException { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); config.vsPath = vsPath; mLayer.save(); } }
@Override public boolean isVirtualStorageEnable(String packageName, int userId) throws RemoteException { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); return config.enable; } }
private VirtualStorageService() { mLayer.read(); }
@Override public void writePersistenceData(Parcel p) { final SparseArray<HashMap<String, VSConfig>> configs = mService.getConfigs(); int N = configs.size(); p.writeInt(N); while (N-- > 0) { int userId = configs.keyAt(N); Map<String, VSConfig> userMap = configs.valueAt(N); p.writeInt(userId); p.writeMap(userMap); } }
private VSConfig getOrCreateVSConfigLocked(String packageName, int userId) { HashMap<String, VSConfig> userMap = mConfigs.get(userId); if (userMap == null) { userMap = new HashMap<>(); mConfigs.put(userId, userMap); } VSConfig config = userMap.get(packageName); if (config == null) { config = new VSConfig(); config.enable = false; userMap.put(packageName, config); } return config; }
@Override public boolean onCreate() { Context context = getContext(); DaemonService.startup(context); if (!VirtualCore.get().isStartup()) { return true; } VPackageManagerService.systemReady(); addService(ServiceManagerNative.PACKAGE, VPackageManagerService.get()); VActivityManagerService.systemReady(context); addService(ServiceManagerNative.ACTIVITY, VActivityManagerService.get()); addService(ServiceManagerNative.USER, VUserManagerService.get()); VAppManagerService.systemReady(); addService(ServiceManagerNative.APP, VAppManagerService.get()); BroadcastSystem.attach(VActivityManagerService.get(), VAppManagerService.get()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { addService(ServiceManagerNative.JOB, VJobSchedulerService.get()); } VNotificationManagerService.systemReady(context); addService(ServiceManagerNative.NOTIFICATION, VNotificationManagerService.get()); VAppManagerService.get().scanApps(); VAccountManagerService.systemReady(); addService(ServiceManagerNative.ACCOUNT, VAccountManagerService.get()); addService(ServiceManagerNative.VS, VirtualStorageService.get()); addService(ServiceManagerNative.DEVICE, VDeviceManagerService.get()); addService(ServiceManagerNative.VIRTUAL_LOC, VirtualLocationService.get()); return true; }
@Override public void setVirtualStorageState(String packageName, int userId, boolean enable) throws RemoteException { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); config.enable = enable; mLayer.save(); } }
@Override public String getVirtualStorage(String packageName, int userId) throws RemoteException { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); return config.vsPath; } }
private VirtualStorageService() { mLayer.read(); }
@Override public void readPersistenceData(Parcel p) { final SparseArray<HashMap<String, VSConfig>> configs = mService.getConfigs(); int N = p.readInt(); while (N-- > 0) { int userId = p.readInt(); //noinspection unchecked HashMap<String, VSConfig> userMap = p.readHashMap(VSConfig.class.getClassLoader()); configs.put(userId, userMap); } }
@Override public void setVirtualStorage(String packageName, int userId, String vsPath) throws RemoteException { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); config.vsPath = vsPath; mLayer.save(); } }
@Override public String getVirtualStorage(String packageName, int userId) throws RemoteException { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); return config.vsPath; } }
private VirtualStorageService() { mLayer.read(); }
@Override public void writePersistenceData(Parcel p) { final SparseArray<HashMap<String, VSConfig>> configs = mService.getConfigs(); int N = configs.size(); p.writeInt(N); while (N-- > 0) { int userId = configs.keyAt(N); Map<String, VSConfig> userMap = configs.valueAt(N); p.writeInt(userId); p.writeMap(userMap); } }
@Override public void setVirtualStorageState(String packageName, int userId, boolean enable) throws RemoteException { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); config.enable = enable; mLayer.save(); } }
@Override public String getVirtualStorage(String packageName, int userId) { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); return config.vsPath; } }
@Override public void setVirtualStorage(String packageName, int userId, String vsPath) { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); config.vsPath = vsPath; mLayer.save(); } }
@Override public boolean isVirtualStorageEnable(String packageName, int userId) throws RemoteException { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); return config.enable; } }
@Override public void setVirtualStorageState(String packageName, int userId, boolean enable) { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); config.enable = enable; mLayer.save(); } }
@Override public boolean isVirtualStorageEnable(String packageName, int userId) { checkUserId(userId); synchronized (mConfigs) { VSConfig config = getOrCreateVSConfigLocked(packageName, userId); return config.enable; } }