1

Settings.System.putIntであるメソッドをフックしてみstaticます。このメソッドの呼び出しの 1 つは、クラスsetAirplaneModeOnのメソッドで行われます。androidのアプリにcom.android.settings.AirplaneModeEnabler配置されています。Settingsまた、putIntメソッドは で使用されcom.android.systemuiます。

putIntただし、次のコードはメソッドをフックしません。例外は発生しませんが、" In android.provider.Settings.System" という内容のログ メッセージもダンプしません。これbeforeHookedMethodは、呼び出されなかったか、フックできなかったことを意味します。Loaded appログが印刷されます。どんな助けでも大歓迎です。

@Override
public void handleLoadPackage(final 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$System", lpparam.classLoader);
    findAndHookMethod(mClass, "putInt", ContentResolver.class, String.class, "int",  new XC_MethodHook() {
        @Override
        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
            XposedBridge.log("In android.provider.Settings.System");
        }
    });
}

Xposed-Framework バージョン: 54

Android バージョン: 4.2.2

4

1 に答える 1

1

Jelly Bean MR1 (4.2) 以降では、ここでわかるように、代わりにメソッドsetAirplaneModeOnを使用putIntします。Settings.GlobalSettings.System

コードは次のように変更する必要があります。

@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 でテストしたところ、正しく動作しました。

于 2015-05-09T17:12:26.830 に答える