Implement block scope request

This commit is contained in:
Nullptr 2023-01-14 23:58:58 +08:00 committed by LoveSy
parent 0339bb631a
commit 7d2c599e96
3 changed files with 11 additions and 4 deletions

View File

@ -274,7 +274,8 @@ public class ConfigManager {
bool = config.get("enable_status_notification");
enableStatusNotification = bool == null || (boolean) bool;
scopeRequestBlocked = (HashSet<String>) config.get("scope_request_blocked");
var set = (Set<String>) config.get("scope_request_blocked");
scopeRequestBlocked = set == null ? new HashSet<>() : set;
// Don't migrate to ConfigFileManager, as XSharedPreferences will be restored soon
String string = (String) config.get("misc_path");
@ -705,6 +706,7 @@ public class ConfigManager {
for (Application obsoleteModule : obsoleteModules) {
Log.d(TAG, "removing obsolete module: " + obsoleteModule.packageName + "/" + obsoleteModule.userId);
removeModuleScopeWithoutCache(obsoleteModule);
removeBlockedScopeRequest(obsoleteModule.packageName);
}
} else {
Log.w(TAG, "pm is dead while caching. invalidating...");

View File

@ -169,9 +169,13 @@ public class LSPModuleService extends IXposedService.Stub {
@Override
public void requestScope(String packageName, IXposedScopeCallback callback) throws RemoteException {
var userId = ensureModule();
if (ConfigManager.getInstance().scopeRequestBlocked(loadedModule.packageName)) {
callback.onScopeRequestDenied(packageName);
} else {
LSPNotificationManager.requestModuleScope(loadedModule.packageName, userId, packageName, callback);
callback.onScopeRequestPrompted(packageName);
}
}
@Override
public String removeScope(String packageName) throws RemoteException {

View File

@ -273,7 +273,8 @@ public class LSPosedService extends ILSPosedService.Stub {
iCallback.onScopeRequestTimeout(scopePackageName);
break;
case "block":
// TODO
ConfigManager.getInstance().blockScopeRequest(packageName);
iCallback.onScopeRequestDenied(scopePackageName);
break;
}
Log.i(TAG, action + " scope " + scopePackageName + " for " + packageName + " in user " + userId);