如何解决访问aidl以使用自定义服务apis + android
框架级别有一个服务,它们仅从框架绑定和启动该服务。我需要访问该服务并从客户端 (Android) 端使用这些 API。我已经浏览了大部分示例,这些示例具有用于从客户端创建/启动服务连接的代码,并且每当使用 IBinder 在该连接的侦听器中连接服务时,我们都可以访问这些 API。 我试过了,比如在客户端添加具有相同包结构的aidl文件并添加以下代码。
val DevManager =applicationContext.getSystemService("servicename")
val clazz = Class.forName(DevManager.javaClass.name)
val method = DevManager.javaClass.getDeclaredMethod(
"getIDevManager",Context::class.java
)
method.isAccessible = true
val DevService: IDevManager =
method.invoke(DevManager) as IDevManager
var status = DevManager.devStatus
我们收到 NoSuchMethodException。 请建议我们如何实现这一点,提前致谢。
解决方法
try {
val testManager = TestApplication.context!!.getSystemService(SERVICE_NAME)
val status = testManager.javaClass.getDeclaredMethod("methodName")
status.isAccessible = true
result = (status.invoke(testManager)).toString()
} catch (e: Exception) {
Log.d(TAG," exception: ${e.message}")
e.printStackTrace()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。