public static void attach(VActivityManagerService ams, VAppManagerService app) { if (gDefault != null) { throw new IllegalStateException(); } gDefault = new BroadcastSystem(VirtualCore.get().getContext(), ams, app); }
@Override public void broadcastFinish(PendingResultData res) { BroadcastSystem.get().broadcastFinish(res); }
private void performScheduleReceiver(IVClient client, int vuid, ActivityInfo info, Intent intent, PendingResultData result) { ComponentName componentName = ComponentUtils.toComponentName(info); BroadcastSystem.get().broadcastSent(vuid, info, result); try { client.scheduleReceiver(info.processName, componentName, intent, result); } catch (Throwable e) { if (result != null) { result.finish(); } } }
private boolean loadPackageInnerLocked(PackageSetting ps) { if (ps.dependSystem) { if (!VirtualCore.get().isOutsideInstalled(ps.packageName)) { return false; } } File cacheFile = VEnvironment.getPackageCacheFile(ps.packageName); VPackage pkg = null; try { pkg = PackageParserEx.readPackageCache(ps.packageName); } catch (Throwable e) { e.printStackTrace(); } if (pkg == null || pkg.packageName == null) { return false; } chmodPackageDictionary(cacheFile); PackageCacheManager.put(pkg, ps); BroadcastSystem.get().startApp(pkg); return true; }
@Override public boolean clearPackage(String packageName) throws RemoteException { try { BroadcastSystem.get().stopApp(packageName); VActivityManagerService.get().killAppByPkg(packageName, VUserHandle.USER_ALL); for (int id : VUserManagerService.get().getUserIds()) { FileUtils.deleteDir(VEnvironment.getDataUserPackageDirectory(id, packageName)); FileUtils.deleteDir(VEnvironment.getVirtualPrivateStorageDir(id, packageName)); } return true; } catch (Exception e) { return false; } }
private BroadcastSystem(Context context, VActivityManagerService ams, VAppManagerService app) { this.mContext = context; this.mApp = app; this.mAMS = ams; mScheduler = new StaticScheduler(); mTimeoutHandler = new TimeoutHandler(); fuckHuaWeiVerifier(); }
@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; }
private void uninstallPackageFully(PackageSetting ps) { String packageName = ps.packageName; try { BroadcastSystem.get().stopApp(packageName); VActivityManagerService.get().killAppByPkg(packageName, VUserHandle.USER_ALL); VEnvironment.getPackageResourcePath(packageName).delete(); FileUtils.deleteDir(VEnvironment.getDataAppPackageDirectory(packageName)); VEnvironment.getOdexFile(packageName).delete(); for (int id : VUserManagerService.get().getUserIds()) { FileUtils.deleteDir(VEnvironment.getDataUserPackageDirectory(id, packageName)); FileUtils.deleteDir(VEnvironment.getVirtualPrivateStorageDir(id, packageName)); } PackageCacheManager.remove(packageName); } catch (Exception e) { e.printStackTrace(); } finally { notifyAppUninstalled(ps, -1); } }
private BroadcastSystem(Context context, VActivityManagerService ams, VAppManagerService app) { this.mContext = context; this.mApp = app; this.mAMS = ams; HandlerThread broadcastThread = new HandlerThread("BroadcastThread"); HandlerThread anrThread = new HandlerThread("BroadcastAnrThread"); broadcastThread.start(); anrThread.start(); mScheduler = new StaticScheduler(broadcastThread.getLooper()); mTimeoutHandler = new TimeoutHandler(anrThread.getLooper()); fuckHuaWeiVerifier(); }
@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; }
private boolean loadPackageInnerLocked(PackageSetting ps) { if (ps.dependSystem) { if (!VirtualCore.get().isOutsideInstalled(ps.packageName)) { return false; } } File cacheFile = VEnvironment.getPackageCacheFile(ps.packageName); VPackage pkg = null; try { pkg = PackageParserEx.readPackageCache(ps.packageName); } catch (Throwable e) { e.printStackTrace(); } if (pkg == null || pkg.packageName == null) { return false; } chmodPackageDictionary(cacheFile); PackageCacheManager.put(pkg, ps); BroadcastSystem.get().startApp(pkg); return true; }
@Override public boolean clearPackage(String packageName) throws RemoteException { try { BroadcastSystem.get().stopApp(packageName); VActivityManagerService.get().killAppByPkg(packageName, VUserHandle.USER_ALL); for (int id : VUserManagerService.get().getUserIds()) { FileUtils.deleteDir(VEnvironment.getDataUserPackageDirectory(id, packageName)); FileUtils.deleteDir(VEnvironment.getVirtualPrivateStorageDir(id, packageName)); } return true; } catch (Exception e) { return false; } }
private void performScheduleReceiver(IVClient client, int vuid, ActivityInfo info, Intent intent, PendingResultData result) { ComponentName componentName = ComponentUtils.toComponentName(info); BroadcastSystem.get().broadcastSent(vuid, info, result); try { client.scheduleReceiver(info.processName, componentName, intent, result); } catch (Throwable e) { if (result != null) { result.finish(); } } }
@Override public void broadcastFinish(PendingResultData res) { BroadcastSystem.get().broadcastFinish(res); }
public static void attach(VActivityManagerService ams, VAppManagerService app) { if (gDefault != null) { throw new IllegalStateException(); } gDefault = new BroadcastSystem(VirtualCore.get().getContext(), ams, app); }
private BroadcastSystem(Context context, VActivityManagerService ams, VAppManagerService app) { this.mContext = context; this.mApp = app; this.mAMS = ams; HandlerThread broadcastThread = new HandlerThread("BroadcastThread"); HandlerThread anrThread = new HandlerThread("BroadcastAnrThread"); broadcastThread.start(); anrThread.start(); mScheduler = new StaticScheduler(broadcastThread.getLooper()); mTimeoutHandler = new TimeoutHandler(anrThread.getLooper()); fuckHuaWeiVerifier(); }
@Override public boolean onCreate() { Context context = getContext(); DaemonService.startup(context); if (!VirtualCore.get().isStartup()) { return true; } VPackageManagerService.systemReady(); IPCBus.register(IPackageManager.class, VPackageManagerService.get()); VActivityManagerService.systemReady(context); IPCBus.register(IActivityManager.class, VActivityManagerService.get()); IPCBus.register(IUserManager.class, VUserManagerService.get()); VAppManagerService.systemReady(); IPCBus.register(IAppManager.class, VAppManagerService.get()); BroadcastSystem.attach(VActivityManagerService.get(), VAppManagerService.get()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { IPCBus.register(IJobScheduler.class, VJobSchedulerService.get()); } VNotificationManagerService.systemReady(context); IPCBus.register(INotificationManager.class, VNotificationManagerService.get()); VAppManagerService.get().scanApps(); VAccountManagerService.systemReady(); IPCBus.register(IAccountManager.class, VAccountManagerService.get()); IPCBus.register(IVirtualStorageService.class, VirtualStorageService.get()); IPCBus.register(IDeviceInfoManager.class, VDeviceManagerService.get()); IPCBus.register(IVirtualLocationManager.class, VirtualLocationService.get()); return true; }
private boolean loadPackageInnerLocked(PackageSetting ps) { if (ps.dependSystem) { if (!VirtualCore.get().isOutsideInstalled(ps.packageName)) { return false; } } File cacheFile = VEnvironment.getPackageCacheFile(ps.packageName); VPackage pkg = null; try { pkg = PackageParserEx.readPackageCache(ps.packageName); } catch (Throwable e) { e.printStackTrace(); } if (pkg == null || pkg.packageName == null) { return false; } chmodPackageDictionary(cacheFile); PackageCacheManager.put(pkg, ps); BroadcastSystem.get().startApp(pkg); return true; }
private void uninstallPackageFully(PackageSetting ps) { String packageName = ps.packageName; try { BroadcastSystem.get().stopApp(packageName); VActivityManagerService.get().killAppByPkg(packageName, VUserHandle.USER_ALL); VEnvironment.getPackageResourcePath(packageName).delete(); FileUtils.deleteDir(VEnvironment.getDataAppPackageDirectory(packageName)); VEnvironment.getOdexFile(packageName).delete(); for (int id : VUserManagerService.get().getUserIds()) { FileUtils.deleteDir(VEnvironment.getDataUserPackageDirectory(id, packageName)); } PackageCacheManager.remove(packageName); } catch (Exception e) { e.printStackTrace(); } finally { notifyAppUninstalled(ps, -1); } }