我遇到了一种情况,我想知道/获取对调用某个方法的对象的引用。
基本上,我正在尝试编写一个 xposed 模块。该模块的功能之一是找出应用程序通过 HTTP 访问的所有 URL。为了实现这一点,我的方法是:
我假设任何应用程序(或至少有问题的应用程序)都会调用 openConnection() 以建立 HTTP 连接。因此,在应用程序运行时挂钩 openConnection() 方法并尝试找出该方法调用的对象是什么。一旦检索到对象,找出在对象实例化时传递给它的字符串。此字符串对象将是应用程序想要建立 HTTP 连接的 URL。
现在我希望java反射是否可以帮助我实现上述目标 - 找出对象引用,然后找出在实例化对象时传递给它的字符串。
示例 - 来自 Android 世界:
URL url = new URL(myurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
现在我想知道是否有办法知道“url”是调用 openConnection() 的对象。最终目标是我希望能够在创建它的对象时获取传递给 URL 的字符串“myurl”。
有没有办法我可以做到这一点?
我已经经历过这个: 如何使用堆栈跟踪或反射找到方法的调用者?
但是,在我的情况下,上述内容并没有多大帮助。此外,在上面有评论提到,即使我使用 StackTraceElement,我也不会得到对象的名称/引用。我只会得到调用者的类型。单独调用,我认为我无法实现找到“url”字符串的最终目标。我会吗?