所以我有一个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
后,日志会再次显示,因此添加该检查似乎是问题所在。
非常感谢任何帮助,谢谢!
答案 0 :(得分: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")