Workaround Binder transaction limits
This commit is contained in:
parent
9a15365a57
commit
a49328edd3
@ -74,7 +74,7 @@ dependencies {
|
|||||||
fullImplementation "androidx.recyclerview:recyclerview:${androidXVersion}"
|
fullImplementation "androidx.recyclerview:recyclerview:${androidXVersion}"
|
||||||
fullImplementation "androidx.cardview:cardview:${androidXVersion}"
|
fullImplementation "androidx.cardview:cardview:${androidXVersion}"
|
||||||
fullImplementation "com.google.android.material:material:${androidXVersion}"
|
fullImplementation "com.google.android.material:material:${androidXVersion}"
|
||||||
fullImplementation 'android.arch.work:work-runtime:1.0.0-rc02'
|
fullImplementation 'android.arch.work:work-runtime:1.0.0'
|
||||||
fullImplementation 'androidx.room:room-runtime:2.0.0'
|
fullImplementation 'androidx.room:room-runtime:2.0.0'
|
||||||
fullImplementation 'androidx.transition:transition:1.0.1'
|
fullImplementation 'androidx.transition:transition:1.0.1'
|
||||||
|
|
||||||
|
@ -41,7 +41,8 @@ public class ApplicationAdapter extends RecyclerView.Adapter<ApplicationAdapter.
|
|||||||
private static final List<String> HIDE_BLACKLIST = Arrays.asList(
|
private static final List<String> HIDE_BLACKLIST = Arrays.asList(
|
||||||
App.self.getPackageName(),
|
App.self.getPackageName(),
|
||||||
"android",
|
"android",
|
||||||
"com.android.chrome"
|
"com.android.chrome",
|
||||||
|
"com.google.android.webview"
|
||||||
);
|
);
|
||||||
private static final String SAFETYNET_PROCESS = "com.google.android.gms.unstable";
|
private static final String SAFETYNET_PROCESS = "com.google.android.gms.unstable";
|
||||||
private static final String GMS_PACKAGE = "com.google.android.gms";
|
private static final String GMS_PACKAGE = "com.google.android.gms";
|
||||||
@ -73,12 +74,28 @@ public class ApplicationAdapter extends RecyclerView.Adapter<ApplicationAdapter.
|
|||||||
set.add(info.processName);
|
set.add(info.processName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PackageInfo getPackageInfo(String pkg) {
|
||||||
|
// Try super hard to get as much info as possible
|
||||||
|
try {
|
||||||
|
return pm.getPackageInfo(pkg,
|
||||||
|
PackageManager.GET_ACTIVITIES | PackageManager.GET_SERVICES |
|
||||||
|
PackageManager.GET_RECEIVERS | PackageManager.GET_PROVIDERS);
|
||||||
|
} catch (Exception e1) {
|
||||||
|
try {
|
||||||
|
PackageInfo info = pm.getPackageInfo(pkg, PackageManager.GET_ACTIVITIES);
|
||||||
|
info.services = pm.getPackageInfo(pkg, PackageManager.GET_SERVICES).services;
|
||||||
|
info.receivers = pm.getPackageInfo(pkg, PackageManager.GET_RECEIVERS).receivers;
|
||||||
|
info.providers = pm.getPackageInfo(pkg, PackageManager.GET_PROVIDERS).providers;
|
||||||
|
return info;
|
||||||
|
} catch (Exception e2) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
private void loadApps() {
|
private void loadApps() {
|
||||||
// Get package info with all components
|
List<ApplicationInfo> installed = pm.getInstalledApplications(0);
|
||||||
List<PackageInfo> installed = pm.getInstalledPackages(
|
|
||||||
PackageManager.GET_ACTIVITIES | PackageManager.GET_SERVICES |
|
|
||||||
PackageManager.GET_RECEIVERS | PackageManager.GET_PROVIDERS);
|
|
||||||
|
|
||||||
fullList.clear();
|
fullList.clear();
|
||||||
hideList.clear();
|
hideList.clear();
|
||||||
@ -86,19 +103,20 @@ public class ApplicationAdapter extends RecyclerView.Adapter<ApplicationAdapter.
|
|||||||
for (String line : Shell.su("magiskhide --ls").exec().getOut())
|
for (String line : Shell.su("magiskhide --ls").exec().getOut())
|
||||||
hideList.add(new HideTarget(line));
|
hideList.add(new HideTarget(line));
|
||||||
|
|
||||||
for (PackageInfo pkg : installed) {
|
for (ApplicationInfo info : installed) {
|
||||||
if (!HIDE_BLACKLIST.contains(pkg.packageName) &&
|
// Do not show black-listed and disabled apps
|
||||||
/* Do not show disabled apps */
|
if (!HIDE_BLACKLIST.contains(info.packageName) && info.enabled) {
|
||||||
pkg.applicationInfo.enabled) {
|
Set<String> set = new ArraySet<>();
|
||||||
// Add all possible process names
|
set.add(info.packageName);
|
||||||
Set<String> procSet = new ArraySet<>();
|
PackageInfo pkg = getPackageInfo(info.packageName);
|
||||||
addProcesses(procSet, pkg.activities);
|
if (pkg != null) {
|
||||||
addProcesses(procSet, pkg.services);
|
addProcesses(set, pkg.activities);
|
||||||
addProcesses(procSet, pkg.receivers);
|
addProcesses(set, pkg.services);
|
||||||
addProcesses(procSet, pkg.providers);
|
addProcesses(set, pkg.receivers);
|
||||||
for (String proc : procSet) {
|
addProcesses(set, pkg.providers);
|
||||||
fullList.add(new HideAppInfo(pkg.applicationInfo, proc));
|
|
||||||
}
|
}
|
||||||
|
for (String process : set)
|
||||||
|
fullList.add(new HideAppInfo(info, process));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,7 +240,7 @@ public class ApplicationAdapter extends RecyclerView.Adapter<ApplicationAdapter.
|
|||||||
Comparator<HideAppInfo> c;
|
Comparator<HideAppInfo> c;
|
||||||
c = Comparators.comparing((HideAppInfo t) -> t.hidden);
|
c = Comparators.comparing((HideAppInfo t) -> t.hidden);
|
||||||
c = Comparators.reversed(c);
|
c = Comparators.reversed(c);
|
||||||
c = Comparators.thenComparing(c, (a, b) -> a.name.compareToIgnoreCase(b.name));
|
c = Comparators.thenComparing(c, t -> t.name, String::compareToIgnoreCase);
|
||||||
c = Comparators.thenComparing(c, t -> t.info.packageName);
|
c = Comparators.thenComparing(c, t -> t.info.packageName);
|
||||||
c = Comparators.thenComparing(c, t -> t.process);
|
c = Comparators.thenComparing(c, t -> t.process);
|
||||||
return c.compare(this, o);
|
return c.compare(this, o);
|
||||||
|
Loading…
Reference in New Issue
Block a user