Android / Java-通过Reflection获取隐藏类的TYPE

时间:2018-07-26 17:24:07

标签: java android reflection

我正在尝试通过反射使用隐藏的包管理器方法installPackage

我的主要问题是它的参数之一是另一个隐藏类android.content.pm.IPackageInstallObserver。如何获得该类的 TYPE (不是它的实例)?

val cPackageManager = Class.forName("android.content.pm.PackageManager")
val cPackageInstallObserver = Class.forName("android.content.pm.IPackageInstallObserver")

// here I need the IPackageInstallObserver type as a parameter type to look up the method
val installPackageMethod = cPackageManager.getMethod("installPackage", Uri::class.java, cPackageInstallObserver::class.java, Integer.TYPE, String::class.java)

按照上述方式,cPackageInstallObserver::class.java仅解析为Class,而不是我需要的实际类型。

有人对此有解决方案吗?

1 个答案:

答案 0 :(得分:1)

您在这里犯了一个简单的错误

Uri::class.java, cPackageInstallObserver, Integer.TYPE, String::class.java)

由于cPackageInstallObserver已经是您需要的类,因为Class.forName返回一种Class类型,但是您使用了cPackageInstallObserver::class.java,所以它与进行{{1} },因此只需String.class.getClass()