使用 xpose 挂接一个以自定义类数组作为参数的方法

2024-04-16

如何挂钩包含自定义类数组的方法?

[Lcom/samsung/android/uniform/widget/notification/NotificationItem;

这就是 smali 论证。我可以上课XposedHelpers.findClass()但我无法创建它的数组..


试试这个。

Class<?> notificationItemClass = Class.forName("...NotificationItem");
Class<?> notificationItemClassArray = java.lang.reflect.Array.newInstance(notificationItemClass, 2).getClass();

这是一个演示:

package com.aegis.log.controller.open;

import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * Created by gallonyin on 2019/1/25.
 */
public class TestReflection {

  public static void main(String[] args) throws ClassNotFoundException,
    InstantiationException, IllegalAccessException,
    IllegalArgumentException, SecurityException,
    InvocationTargetException, NoSuchMethodException {

    Class<?> relativeClass = Class.forName("com.aegis.log.controller.judgetool.Relative");
    Object relativeFather = relativeClass.newInstance();
    Object relativeMother = relativeClass.newInstance();
    relativeClass.getMethod("setName", String.class).invoke(relativeFather,
      "father");
    relativeClass.getMethod("setName", String.class).invoke(relativeMother,
      "mother");

    Class<?> personClass = Class.forName("com.aegis.log.controller.judgetool.Person");
    Object personObject = personClass.newInstance();

    Object[] temp = (Object[]) Array.newInstance(relativeClass, 2);
    temp[0] = relativeFather;
    temp[1] = relativeMother;

    Class<?> relativeArrayClass = Array.newInstance(relativeClass, 2).getClass();
    Method setParents = personClass.getMethod("setParents", relativeArrayClass);
    setParents.invoke(personObject, relativeArrayClass.cast(temp));
    personClass.getMethod("getParents").invoke(personObject);
  }
}

public class Person {
  private Relative[] parents;

  public void getParents() {
    for (Relative r : parents)
      r.getName();
  }

  public void setParents(Relative[] parents) {
    this.parents = parents;
  }
}

public class Relative {
  private String name;

  public void getName() {
    System.out.println(name);
  }

  public void setName(String name) {
    this.name = name;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 xpose 挂接一个以自定义类数组作为参数的方法 的相关文章

随机推荐

  • 复制 Photoshop sRGB 到 LAB 转换

    我想要实现的任务是复制 Photoshop RGB 到 LAB 的转换 为简单起见 我将描述我如何仅提取 L 通道 提取 Photoshop 的 L 通道 这是 RGB 图像 其中包括所有 RGB 颜色 请点击下载 为了提取 Photosh
  • 以声明方式从 Postgres 字符串中获取最后一个单词

    编辑 这个问题的原始标题是 以声明方式获取 Postgres 数组的最后一个元素 Postgres中如何获取数组的最后一个元素 我需要以声明方式执行此操作 因为我想将其用作 ORDER BY 标准 我不想为它创建一个特殊的 PGSQL 函数
  • 解决实现 ISerialized 的对象的循环引用

    我正在编写自己的 IFormatter 实现 但我想不出一种方法来解决两个都实现 ISerialized 的类型之间的循环引用 这是通常的模式 Serializable class Foo ISerializable private Bar
  • 刷新浏览器后 Font Awesome 图标消失

    刷新页面 F5 后 我的字形从 Internet Explorer 11 网页消失 但是 当我通过单击其菜单链接打开网页 首次刷新后 时 页面显示正确 在 Chrome 中 即使按 F5 后也能正常工作 我正在运行 Bootstrap v3
  • Retrofit 2 - 在 api 级别添加标头的优雅方式

    我的改装2 2 0 2当前 客户端需要向请求添加自定义标头 我正在使用一个Interceptor将这些标头添加到所有请求中 OkHttpClient httpClient new OkHttpClient httpClient networ
  • 如何在 Rails 中只显示一次 Flash 消息?

    是否可以在 Rails 中只显示一次 Flash 消息 我的意思是 当我删除某些内容时 闪光灯会显示 已删除 撤消 然后如果我单击一下 然后单击浏览器的 后退 按钮 该消息仍然存在 你可以使用 flash now 这是一个经验法则 In y
  • LinearLayout@422725b0 不是滑动抽屉

    嗨 我对此快疯了 有几个问题 但似乎没有一个能解决我的问题 当我尝试设置抽屉布局样式时 我收到错误
  • 来自守护程序的错误响应:getsockopt:连接被拒绝

    当我尝试从私有 Docker 注册表中提取映像时 出现错误 Error response from daemon Get https XX XX XX XXX 5000 v1 ping dial tcp XX XX XX XXX 5000
  • 使用 < 有什么区别? java 泛型中的 extends SomeAbstract> 与 SomeAbstract

    我将从 DotNet 转向 java 这种扩展的想法是新的 我看过一些帖子充分解释了使用List
  • 在 Python 的 for 循环中使用 next 安全吗?

    考虑以下 Python 代码 b 1 2 3 4 5 6 7 a iter b for x in a if x 2 0 print next a 这将打印 3 5 和 7 是使用next在可靠构造上迭代的变量上 您可以假设 StopIter
  • 为什么 gcc 和 NVCC (g++) 会看到两种不同的结构大小?

    我正在尝试将 CUDA 添加到 90 年代末编写的现有单线程 C 程序中 为此 我需要混合两种语言 C 和 C nvcc 是 c 编译器 问题在于 C 编译器将结构视为特定大小 而 C 编译器将相同的结构视为略有不同的大小 那很糟 我对此感
  • PHP:SimpleXMLElement() 类和 SimpleXML_load_string() 之间有什么区别?

    我见过很多程序员实现SimpleXML load string 而不是SimpleXMLElement 班级 使用前者比后者有什么好处吗 我读过simplexml 的 PHP 手册 http www php net manual en bo
  • 在钥匙串中找不到有效的 iOS 代码签名密钥。您需要申请协同设计证书

    因此 我构建了一个 Xamarin Forms 应用程序 现在我想在物理 iOS 设备上进行测试 调试器成功运行了我的程序 但不幸的是 当我在物理 iPhone 上部署程序时遇到了问题 为了部署我的应用程序 我执行了以下操作 按照本教程为我
  • 仅当尚未设置时才进行原子设置

    仅当尚未在 Redis 中设置时 是否有办法执行原子设置 具体来说 我正在创建一个像 myapp user user email 这样的用户 并且希望 Redis 在 user email 已被占用时返回错误 而不是默默地替换旧值 比如声明
  • node.js/angular.js - 无法获取

    我有根路径并且工作正常 我还有另一条路线 127 0 0 1 3000 dashboard 如果我只是在地址栏中输入该 url 我会收到此错误 无法获取 仪表板 如果我创建一个指向相同网址的链接 它就可以正常工作 如果我刷新该页面 我会再次
  • 如何递归探索Python嵌套字典? [复制]

    这个问题在这里已经有答案了 我很好奇是否有一种方法可以在 python 中递归地探索嵌套字典 我的意思是 假设我们有一个如下示例 d a b c 1 2 3 获取最里面字典的内容需要什么代码 c 1 2 3 遍历a and b 在这种情况下
  • userLocation:纬度/经度返回零?

    我只是在查看 mapKit 并决定创建一个快速按钮来显示我当前的位置 但是当我按下该按钮时 我的纬度 经度始终显示为 0 000000 0 000000 地图视图已加载 因为在按下按钮之前我可以在模拟器上看到地图 以前 我通过使用 core
  • 向 Web 应用程序的所有 HTML 元素添加 ID 属性?

    目前 我正在使用 RoR MySQL HTML CSS 和 jQuery 等构建一个 Web 门户 我收到自动化测试工程师的请求 要求向我的应用程序的所有元素添加 ID 属性 如果可能的话 还有 NAME 属性 我对此感到困惑 也许我不确定
  • Bootstrap 卡头 - 所有卡头高度相同

    我在两个网页上使用引导卡 在一页上 标题文本是固定的 因此我可以使用 min height 来匹配其卡片标题高度 在第二页上 将生成这些卡片 因此我不知道文本长度和单词 我希望连续的所有卡头都具有相同的高度 有没有办法根据一行中最大的卡头计
  • 使用 xpose 挂接一个以自定义类数组作为参数的方法

    如何挂钩包含自定义类数组的方法 Lcom samsung android uniform widget notification NotificationItem 这就是 smali 论证 我可以上课XposedHelpers findCl