[parasitic] Skip adding shortcut when manager is installed (#1189)

This commit is contained in:
LoveSy 2021-09-28 18:32:59 +08:00 committed by GitHub
parent 25ec7c4b1b
commit a3ce1b2556
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 8 deletions

View File

@ -85,7 +85,6 @@ public class ConfigManager {
private boolean verboseLog = true; private boolean verboseLog = true;
private String miscPath = null; private String miscPath = null;
private final String manager = BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME;
private int managerUid = -1; private int managerUid = -1;
private final Handler cacheHandler; private final Handler cacheHandler;
@ -234,11 +233,11 @@ public class ConfigManager {
public synchronized void updateManager() { public synchronized void updateManager() {
if (!PackageService.isAlive()) return; if (!PackageService.isAlive()) return;
try { try {
PackageInfo info = PackageService.getPackageInfo(manager, 0, 0); PackageInfo info = PackageService.getPackageInfo(BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME, 0, 0);
if (info != null) { if (info != null) {
managerUid = info.applicationInfo.uid; managerUid = info.applicationInfo.uid;
} else { } else {
Log.w(TAG, "manager is not installed"); Log.i(TAG, "manager is not installed");
} }
} catch (RemoteException ignored) { } catch (RemoteException ignored) {
} }
@ -820,14 +819,14 @@ public class ConfigManager {
return true; return true;
} }
public boolean isManager(String packageName) {
return packageName.equals(manager);
}
public boolean isManager(int uid) { public boolean isManager(int uid) {
return uid == managerUid; return uid == managerUid;
} }
public boolean isManagerInstalled() {
return managerUid != -1;
}
public String getPrefsPath(String fileName, int uid) { public String getPrefsPath(String fileName, int uid) {
int userId = uid / PER_USER_RANGE; int userId = uid / PER_USER_RANGE;
return miscPath + "/prefs" + (userId == 0 ? "" : String.valueOf(userId)) + "/" + fileName; return miscPath + "/prefs" + (userId == 0 ? "" : String.valueOf(userId)) + "/" + fileName;

View File

@ -263,6 +263,10 @@ public class LSPManagerService extends ILSPManagerService.Stub {
public static void createOrUpdateShortcut() { public static void createOrUpdateShortcut() {
try { try {
if (ConfigManager.getInstance().isManagerInstalled()) {
Log.d(TAG, "Manager has installed, skip adding shortcut");
return;
}
while (!UserService.isUserUnlocked(0)) { while (!UserService.isUserUnlocked(0)) {
Log.d(TAG, "user is not yet unlocked, waiting for 1s..."); Log.d(TAG, "user is not yet unlocked, waiting for 1s...");
Thread.sleep(1000); Thread.sleep(1000);

View File

@ -34,6 +34,8 @@ import android.os.Bundle;
import android.os.IBinder; import android.os.IBinder;
import android.util.Log; import android.util.Log;
import org.lsposed.lspd.BuildConfig;
import java.util.Arrays; import java.util.Arrays;
public class LSPosedService extends ILSPosedService.Stub { public class LSPosedService extends ILSPosedService.Stub {
@ -149,7 +151,7 @@ public class LSPosedService extends ILSPosedService.Stub {
LSPManagerService.broadcastIntent(moduleName, userId); LSPManagerService.broadcastIntent(moduleName, userId);
} }
if (moduleName != null && ConfigManager.getInstance().isManager(moduleName) && userId == 0) { if (BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME.equals(moduleName) && userId == 0) {
Log.d(TAG, "Manager updated"); Log.d(TAG, "Manager updated");
try { try {
ConfigManager.getInstance().updateManager(); ConfigManager.getInstance().updateManager();