找到钩住Xposed模块的方法

时间:2015-05-02 09:27:18

标签: java android xposed-framework

我正在尝试制作一个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/

找到它

谢谢!

1 个答案:

答案 0 :(得分:6)

我在android git的keyguard源代码中搜索了一下,我找到了this方法,你应该勾选this方法。在此方法中,您可以在正确的时间直接访问模式。

class polinom;

template <typename Tip>
class node {
  node <Tip>* next;
  Tip coef;
  int grad, nr;
public:
  friend class polinom;
};

class polinom
{
protected:
  node<Tip>* prim;      <--------- THIS LINE
};             

稍微多一点,我发现了一个静态方法,您可以使用它将模式转换为字符串以获得更好的可用性:LockPatternUtils.patternToString()

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…
        }
});