Add getFrameworkPrivilege and featuredMethod
This commit is contained in:
parent
ad463ac1e0
commit
516f9e35db
|
|
@ -761,6 +761,20 @@ public class LSPosedContext extends XposedContext {
|
|||
return BuildConfig.VERSION_CODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFrameworkPrivilege() {
|
||||
try {
|
||||
return service.getFrameworkPrivilege();
|
||||
} catch (RemoteException ignored) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object featuredMethod(String name, Object... args) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
private <T, U extends Executable> MethodUnhooker<T, U> doHook(U hookMethod, int priority, T callback) {
|
||||
if (Modifier.isAbstract(hookMethod.getModifiers())) {
|
||||
throw new IllegalArgumentException("Cannot hook abstract methods: " + hookMethod);
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import io.github.libxposed.service.IXposedService;
|
||||
|
||||
public class LSPInjectedModuleService extends ILSPInjectedModuleService.Stub {
|
||||
private final Module loadedModule;
|
||||
|
||||
|
|
@ -22,6 +24,11 @@ public class LSPInjectedModuleService extends ILSPInjectedModuleService.Stub {
|
|||
loadedModule = module;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFrameworkPrivilege() {
|
||||
return IXposedService.FRAMEWORK_PRIVILEGE_ROOT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle requestRemotePreferences(String group, IRemotePreferenceCallback callback) {
|
||||
var bundle = new Bundle();
|
||||
|
|
|
|||
|
|
@ -137,6 +137,17 @@ public class LSPModuleService extends IXposedService.Stub {
|
|||
return BuildConfig.VERSION_CODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFrameworkPrivilege() throws RemoteException {
|
||||
ensureModule();
|
||||
return IXposedService.FRAMEWORK_PRIVILEGE_ROOT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle featuredMethod(String name, Bundle args) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getScope() throws RemoteException {
|
||||
ensureModule();
|
||||
|
|
|
|||
|
|
@ -49,6 +49,16 @@ public class XposedContextWrapper extends ContextWrapper implements XposedInterf
|
|||
return getBaseContext().getFrameworkVersionCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
final public int getFrameworkPrivilege() {
|
||||
return getBaseContext().getFrameworkPrivilege();
|
||||
}
|
||||
|
||||
@Override
|
||||
final public Object featuredMethod(String name, Object... args) {
|
||||
return getBaseContext().featuredMethod(name, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
final public MethodUnhooker<BeforeHooker<Method>, Method> hookBefore(@NonNull Method origin, @NonNull BeforeHooker<Method> hooker) {
|
||||
return getBaseContext().hookBefore(origin, hooker);
|
||||
|
|
|
|||
|
|
@ -15,6 +15,11 @@ import io.github.libxposed.utils.DexParser;
|
|||
public interface XposedInterface {
|
||||
int API = 100;
|
||||
|
||||
int FRAMEWORK_PRIVILEGE_ROOT = 0;
|
||||
int FRAMEWORK_PRIVILEGE_CONTAINER = 1;
|
||||
int FRAMEWORK_PRIVILEGE_APP = 2;
|
||||
int FRAMEWORK_PRIVILEGE_EMBEDDED = 3;
|
||||
|
||||
interface BeforeHookCallback<T> {
|
||||
@NonNull
|
||||
T getOrigin();
|
||||
|
|
@ -104,6 +109,10 @@ public interface XposedInterface {
|
|||
|
||||
long getFrameworkVersionCode();
|
||||
|
||||
int getFrameworkPrivilege();
|
||||
|
||||
Object featuredMethod(String name, Object... args);
|
||||
|
||||
@Nullable
|
||||
MethodUnhooker<BeforeHooker<Method>, Method> hookBefore(@NonNull Method origin, @NonNull BeforeHooker<Method> hooker);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,12 @@ import io.github.libxposed.service.IXposedScopeCallback;
|
|||
|
||||
interface IXposedService {
|
||||
const int API = 100;
|
||||
|
||||
const int FRAMEWORK_PRIVILEGE_ROOT = 0;
|
||||
const int FRAMEWORK_PRIVILEGE_CONTAINER = 1;
|
||||
const int FRAMEWORK_PRIVILEGE_APP = 2;
|
||||
const int FRAMEWORK_PRIVILEGE_EMBEDDED = 3;
|
||||
|
||||
const String AUTHORITY_SUFFIX = ".XposedService";
|
||||
const String SEND_BINDER = "SendBinder";
|
||||
|
||||
|
|
@ -11,6 +17,8 @@ interface IXposedService {
|
|||
String getFrameworkName() = 2;
|
||||
String getFrameworkVersion() = 3;
|
||||
long getFrameworkVersionCode() = 4;
|
||||
int getFrameworkPrivilege() = 5;
|
||||
Bundle featuredMethod(String name, in Bundle args) = 6;
|
||||
|
||||
// scope utilities
|
||||
List<String> getScope() = 10;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ package org.lsposed.lspd.service;
|
|||
import org.lsposed.lspd.service.IRemotePreferenceCallback;
|
||||
|
||||
interface ILSPInjectedModuleService {
|
||||
int getFrameworkPrivilege();
|
||||
|
||||
Bundle requestRemotePreferences(String group, IRemotePreferenceCallback callback);
|
||||
|
||||
ParcelFileDescriptor openRemoteFile(String path);
|
||||
|
|
|
|||
Loading…
Reference in New Issue