我正在尝试通过反射使用隐藏的包管理器方法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
,而不是我需要的实际类型。
有人对此有解决方案吗?
答案 0 :(得分:1)
您在这里犯了一个简单的错误
Uri::class.java, cPackageInstallObserver, Integer.TYPE, String::class.java)
由于cPackageInstallObserver
已经是您需要的类,因为Class.forName
返回一种Class
类型,但是您使用了cPackageInstallObserver::class.java
,所以它与进行{{1} },因此只需String.class.getClass()
。