我尝试挂钩Settings.System.putInt
的{{1}}方法。其中一个对此方法的调用是在static
类的setAirplaneModeOn
方法中完成的。它被放置在android的com.android.settings.AirplaneModeEnabler
app中。另外,Settings
中使用了putInt
方法。
但是,以下代码不会挂钩com.android.systemui
方法。它不会给出任何异常,但它也不会转储任何内容为“putInt
”的日志消息,这意味着In android.provider.Settings.System
未被调用或无法挂钩。打印beforeHookedMethod
个日志。任何帮助是极大的赞赏。
Loaded app
Xposed-Framework版本:54
Android版:4.2.2
答案 0 :(得分:1)
由于Jelly Bean MR1(4.2)方法setAirplaneModeOn
使用putInt
中的Settings.Global
代替Settings.System
,因为您可以看到here。
您的代码应该像这样修改:
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
if (!(lpparam.packageName.equals("com.android.systemui") || lpparam.packageName.equals("com.android.settings"))) {
return;
}
XposedBridge.log("Loaded app: " + lpparam.packageName);
final Class<?> mClass = XposedHelpers.findClass("android.provider.Settings$Global", lpparam.classLoader);
findAndHookMethod(mClass, "putInt", ContentResolver.class, String.class, int.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
XposedBridge.log("In android.provider.Settings.Global");
}
});
}
我使用KitKat 4.4.4测试了更新的代码,它运行正常。