android 添加包名称检查后,暴露日志不工作

jchrr9hc  于 2022-12-25  发布在  Android
关注(0)|答案(1)|浏览(116)

我有一个Xposed模块的类,它是我在Xposed module tutorial教程之后写的。教程中的第一个代码片段工作得很好:

public class MyClass implements IXposedHookLoadPackage {
    public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
        XposedBridge.log("Loaded app: " + lpparam.packageName);
    }
}

日志会为在设备上打开的每个应用程序打印。但是,当继续下一个示例时,该示例显示如何仅选择您感兴趣的软件包

public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
if (!lpparam.packageName.equals("com.mypackage"))
    return;

XposedBridge.log("we are in mypackage!");}

日志中没有任何内容被打印出来。所以我甚至试着保留第一个例子中的日志,以防我的包出现问题,代码看起来像这样:

public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
XposedBridge.log("Loaded app: " + lpparam.packageName);

if (!lpparam.packageName.equals("com.mypackage"))
    return;

XposedBridge.log("we are in mypackage!");}

但是没有打印任何包。在完全删除if之后,日志再次开始显示,所以似乎添加该检查是问题所在。
任何帮助将不胜感激,谢谢!

oprakyz7

oprakyz71#

lpparam.packageName是被挂接的应用程序的包名,包名就像是应用程序的唯一标识符,所以如果你把它和com.mypackage进行匹配,并且你没有看到日志,这基本上意味着没有应用程序使用这个包名。
请尝试以下操作:

if (!lpparam.packageName.equals("com.mypackage")){
    XposedBridge.log("We are not hooking " + lpparam.packageName + "!");
    return; // Apps with different package names dont get hooks cause you return here
}

例如,假设你想挂钩Facebook应用,那么你应该与com.facebook.katana进行比较:!lpparam.packageName.equals("com.facebook.katana")

相关问题