public static void scheduleServiceArgs(IInterface appThread, IBinder token, boolean taskRemoved, int startId, int flags, Intent args) throws RemoteException { if (Build.VERSION.SDK_INT >= 26) { List<Object> list = new ArrayList<>(1); Object serviceStartArg = ServiceStartArgs.ctor.newInstance(taskRemoved, startId, flags, args); list.add(serviceStartArg); IApplicationThreadOreo.scheduleServiceArgs.call(appThread, token, ParceledListSliceCompat.create(list)); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) { IApplicationThreadICSMR1.scheduleServiceArgs.call(appThread, token, taskRemoved, startId, flags, args); } else { IApplicationThread.scheduleServiceArgs.call(appThread, token, startId, flags, args); } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { String processName = (String) args[0]; int uid = (int) args[1]; int flags = (int) args[2]; List<ProviderInfo> infos = VPackageManager.get().queryContentProviders(processName, uid, flags); if (ParceledListSliceCompat.isReturnParceledListSlice(method)) { return ParceledListSliceCompat.create(infos); } return infos; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { boolean slice = ParceledListSliceCompat.isReturnParceledListSlice(method); int userId = VUserHandle.myUserId(); List<ResolveInfo> appResult = VPackageManager.get().queryIntentServices((Intent) args[0], (String) args[1], (Integer) args[2], userId); Object _hostResult = method.invoke(who, args); if (_hostResult != null) { List<ResolveInfo> hostResult = slice ? ParceledListSlice.getList.call(_hostResult) : (List) _hostResult; if (hostResult != null) { Iterator<ResolveInfo> iterator = hostResult.iterator(); while (iterator.hasNext()) { ResolveInfo info = iterator.next(); if (info == null || info.serviceInfo == null || !isVisiblePackage(info.serviceInfo.applicationInfo)) { iterator.remove(); } } appResult.addAll(hostResult); } } if (slice) { return ParceledListSliceCompat.create(appResult); } return appResult; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { boolean slice = ParceledListSliceCompat.isReturnParceledListSlice(method); int userId = VUserHandle.myUserId(); List<ResolveInfo> appResult = VPackageManager.get().queryIntentActivities((Intent) args[0], (String) args[1], (Integer) args[2], userId); Object _hostResult = method.invoke(who, args); if (_hostResult != null) { List<ResolveInfo> hostResult = slice ? ParceledListSlice.getList.call(_hostResult) : (List) _hostResult; if (hostResult != null) { Iterator<ResolveInfo> iterator = hostResult.iterator(); while (iterator.hasNext()) { ResolveInfo info = iterator.next(); if (info == null || info.activityInfo == null || !isVisiblePackage(info.activityInfo.applicationInfo)) { iterator.remove(); } } appResult.addAll(hostResult); } } if (slice) { return ParceledListSliceCompat.create(appResult); } return appResult; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { boolean slice = ParceledListSliceCompat.isReturnParceledListSlice(method); int userId = VUserHandle.myUserId(); List<ResolveInfo> appResult = VPackageManager.get().queryIntentReceivers((Intent) args[0], (String) args[1], (Integer) args[2], userId); Object _hostResult = method.invoke(who, args); List<ResolveInfo> hostResult = slice ? ParceledListSlice.getList.call(_hostResult) : (List) _hostResult; if (hostResult != null) { Iterator<ResolveInfo> iterator = hostResult.iterator(); while (iterator.hasNext()) { ResolveInfo info = iterator.next(); if (info == null || info.activityInfo == null || !isVisiblePackage(info.activityInfo.applicationInfo)) { iterator.remove(); } } appResult.addAll(hostResult); } if (slice) { return ParceledListSliceCompat.create(appResult); } return appResult; } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { boolean slice = ParceledListSliceCompat.isReturnParceledListSlice(method); int userId = VUserHandle.myUserId(); List<ResolveInfo> appResult = VPackageManager.get().queryIntentContentProviders((Intent) args[0], (String) args[1], (Integer) args[2], userId); Object _hostResult = method.invoke(who, args); List<ResolveInfo> hostResult = slice ? ParceledListSlice.getList.call(_hostResult) : (List) _hostResult; if (hostResult != null) { Iterator<ResolveInfo> iterator = hostResult.iterator(); while (iterator.hasNext()) { ResolveInfo info = iterator.next(); if (info == null || info.providerInfo == null || !isVisiblePackage(info.providerInfo.applicationInfo)) { iterator.remove(); } } appResult.addAll(hostResult); } if (ParceledListSliceCompat.isReturnParceledListSlice(method)) { return ParceledListSliceCompat.create(appResult); } return appResult; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int flags = (Integer) args[0]; int userId = VUserHandle.myUserId(); List<ApplicationInfo> appInfos = VPackageManager.get().getInstalledApplications(flags, userId); if (ParceledListSliceCompat.isReturnParceledListSlice(method)) { return ParceledListSliceCompat.create(appInfos); } return appInfos; } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int flags = (int) args[0]; int userId = VUserHandle.myUserId(); List<PackageInfo> packageInfos; if (isAppProcess()) { packageInfos = new ArrayList<>(VirtualCore.get().getInstalledAppCount()); } else { packageInfos = VirtualCore.get().getUnHookPackageManager().getInstalledPackages(flags); } packageInfos.addAll(VPackageManager.get().getInstalledPackages(flags, userId)); if (ParceledListSliceCompat.isReturnParceledListSlice(method)) { return ParceledListSliceCompat.create(packageInfos); } else { return packageInfos; } } }
public static void scheduleServiceArgs(IInterface appThread, IBinder token, boolean taskRemoved, int startId, int flags, Intent args) throws RemoteException { if (Build.VERSION.SDK_INT >= 26) { List<Object> list = new ArrayList<>(1); Object serviceStartArg = ServiceStartArgs.ctor.newInstance(taskRemoved, startId, flags, args); list.add(serviceStartArg); IApplicationThreadOreo.scheduleServiceArgs.call(appThread, token, ParceledListSliceCompat.create(list)); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) { IApplicationThreadICSMR1.scheduleServiceArgs.call(appThread, token, taskRemoved, startId, flags, args); } else { IApplicationThread.scheduleServiceArgs.call(appThread, token, startId, flags, args); } }
public static void scheduleServiceArgs(IInterface appThread, IBinder token, boolean taskRemoved, int startId, int flags, Intent args) throws RemoteException { if (Build.VERSION.SDK_INT >= 26) { List<Object> list = new ArrayList<>(1); Object serviceStartArg = ServiceStartArgs.ctor.newInstance(taskRemoved, startId, flags, args); list.add(serviceStartArg); IApplicationThreadOreo.scheduleServiceArgs.call(appThread, token, ParceledListSliceCompat.create(list)); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) { IApplicationThreadICSMR1.scheduleServiceArgs.call(appThread, token, taskRemoved, startId, flags, args); } else { IApplicationThread.scheduleServiceArgs.call(appThread, token, startId, flags, args); } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { String processName = (String) args[0]; int flags = (int) args[2]; List<ProviderInfo> infos = VPackageManager.get().queryContentProviders(processName, flags, 0); if (ParceledListSliceCompat.isReturnParceledListSlice(method)) { return ParceledListSliceCompat.create(infos); } return infos; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { String processName = (String) args[0]; int uid = (int) args[1]; int flags = (int) args[2]; List<ProviderInfo> infos = VPackageManager.get().queryContentProviders(processName, uid, flags); if (ParceledListSliceCompat.isReturnParceledListSlice(method)) { return ParceledListSliceCompat.create(infos); } return infos; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { boolean slice = ParceledListSliceCompat.isReturnParceledListSlice(method); int userId = VUserHandle.myUserId(); List<ResolveInfo> appResult = VPackageManager.get().queryIntentReceivers((Intent) args[0], (String) args[1], (Integer) args[2], userId); Object _hostResult = method.invoke(who, args); List<ResolveInfo> hostResult = slice ? (List<ResolveInfo>) ParceledListSlice.getList.call(_hostResult) : (List) _hostResult; if (hostResult != null) { hostResult.removeIf(info -> info == null || info.activityInfo == null || !isVisiblePackage(info.activityInfo.applicationInfo)); appResult.addAll(hostResult); } if (slice) { return ParceledListSliceCompat.create(appResult); } return appResult; } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int flags = (Integer) args[0]; int userId = VUserHandle.myUserId(); List<ApplicationInfo> appInfos = VPackageManager.get().getInstalledApplications(flags, userId); if (ParceledListSliceCompat.isReturnParceledListSlice(method)) { return ParceledListSliceCompat.create(appInfos); } return appInfos; } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int flags = (Integer) args[0]; int userId = VUserHandle.myUserId(); List<ApplicationInfo> appInfos = VPackageManager.get().getInstalledApplications(flags, userId); if (ParceledListSliceCompat.isReturnParceledListSlice(method)) { return ParceledListSliceCompat.create(appInfos); } return appInfos; } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { boolean slice = ParceledListSliceCompat.isReturnParceledListSlice(method); int userId = VUserHandle.myUserId(); List<ResolveInfo> appResult = VPackageManager.get().queryIntentActivities((Intent) args[0], (String) args[1], (Integer) args[2], userId); Object _hostResult = method.invoke(who, args); if (_hostResult != null) { List<ResolveInfo> hostResult = slice ? (List<ResolveInfo>) ParceledListSlice.getList.call(_hostResult) : (List) _hostResult; if (hostResult != null) { hostResult.removeIf(info -> info == null || info.activityInfo == null || !isVisiblePackage(info.activityInfo.applicationInfo)); appResult.addAll(hostResult); } } if (slice) { return ParceledListSliceCompat.create(appResult); } return appResult; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { boolean slice = ParceledListSliceCompat.isReturnParceledListSlice(method); int userId = VUserHandle.myUserId(); List<ResolveInfo> appResult = VPackageManager.get().queryIntentContentProviders((Intent) args[0], (String) args[1], (Integer) args[2], userId); Object _hostResult = method.invoke(who, args); List<ResolveInfo> hostResult = slice ? (List<ResolveInfo>) ParceledListSlice.getList.call(_hostResult) : (List) _hostResult; if (hostResult != null) { hostResult.removeIf(info -> info == null || info.providerInfo == null || !isVisiblePackage(info.providerInfo.applicationInfo)); appResult.addAll(hostResult); } if (ParceledListSliceCompat.isReturnParceledListSlice(method)) { return ParceledListSliceCompat.create(appResult); } return appResult; }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int flags = (int) args[0]; int userId = VUserHandle.myUserId(); List<PackageInfo> packageInfos; if (isAppProcess()) { packageInfos = new ArrayList<>(VirtualCore.get().getInstalledAppCount()); } else { packageInfos = VirtualCore.get().getUnHookPackageManager().getInstalledPackages(flags); } packageInfos.addAll(VPackageManager.get().getInstalledPackages(flags, userId)); if (ParceledListSliceCompat.isReturnParceledListSlice(method)) { return ParceledListSliceCompat.create(packageInfos); } else { return packageInfos; } } }
@Override public Object call(Object who, Method method, Object... args) throws Throwable { int flags = (int) args[0]; int userId = VUserHandle.myUserId(); List<PackageInfo> packageInfos; if (isAppProcess()) { packageInfos = new ArrayList<>(VirtualCore.get().getInstalledAppCount()); } else { packageInfos = VirtualCore.get().getUnHookPackageManager().getInstalledPackages(flags); } packageInfos.addAll(VPackageManager.get().getInstalledPackages(flags, userId)); if (ParceledListSliceCompat.isReturnParceledListSlice(method)) { return ParceledListSliceCompat.create(packageInfos); } else { return packageInfos; } } }