1

因此,我在本教程Xposed 模块教程之后编写了 Xposed 模块的此类。本教程的第一段代码工作得很好:

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日志后,日志再次开始显示,因此似乎添加该检查是问题所在。

任何帮助将不胜感激,谢谢!

4

1 回答 1

0

是被挂钩的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")

于 2018-03-29T14:30:47.660 回答