5

Xposed モジュールを作成しようとしています。最初に、時計を操作するための指示が記載されたチュートリアルを読みました。コードは次のようになります。

package de.robv.android.xposed.mods.tutorial;

import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
import android.graphics.Color;
import android.widget.TextView;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;

public class Tutorial implements IXposedHookLoadPackage {
    public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
        if (!lpparam.packageName.equals("com.android.systemui"))
            return;

        findAndHookMethod("com.android.systemui.statusbar.policy.Clock", lpparam.classLoader, "updateClock", new XC_MethodHook() {
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                TextView tv = (TextView) param.thisObject;
                String text = tv.getText().toString();
                tv.setText(text + " :)");
                tv.setTextColor(Color.RED);
            }
        });
    }
}

パターンロックが入力された後に何らかの操作を実行する必要がある独自のモジュールを作成したいと考えています。パターンが入力された後、パターンを読み取り、パターンに従って何らかの操作を実行したいと考えています。この点で私を助けてください。フックする方法を特定することさえできません。私はそれを見つけようとしていました: http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/

ありがとう!

4

1 に答える 1

6

Android gitのキーガードソースを少し検索したところ、フックする必要があるこのメソッドを特徴とするこのメソッドが見つかりました。この方法では、適切なタイミングでパターンに直接アクセスできます。

findAndHookMethod("com.android.internal.widget.LockPatternUtils", lpparam.classLoader, "checkPattern", List.class /*You need to name the attribute's data type, I'm still not sure if List.class is enough, as the type is List<LockPatternView.Cell>*/, new XC_MethodHook() {
@Override
        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
            List<?> pattern = param.args[0];
            // Proceed…
        }
});

少しおまけとして、使いやすくするためにパターンを文字列に変換するために使用できる静的メソッドを見つけました: LockPatternUtils.patternToString()

Class[] c = new Class[1];
c[0] = List.class;
XposedHelpers.callStaticMethod(XposedHelpers.findClass("com.android.internal.widget.LockPatternUtils", lpparam.classLoader), "patternToString", c, pattern);
于 2015-05-04T14:12:51.153 に答える