众所周知,在Android9之后,Android系统限制了通过反射的方式访问隐藏Api,这对于系统应用来说或者你拥有系统签名的应用来说,并不是一件难事,但是更多的时候,我们的应用并不是系统应用,而现在通过反射的方式调用也会提示出错,那么这种情况下我们是否还有其他方法能够访问这些系统级API吗?答案是有的。
在将方法之前,我们先了解一下,什么是隐藏API,以及为什么我们需要访问这些Api。如果你对这些都不感兴趣,可以直接拖到下面看解决方案。
为什么隐藏 API?
Google 隐藏 API 的原因有很多。有些东西仅供内部或系统应用程序使用,如果由第三方应用程序使用则无法使用。其他的是实验性的或不稳定的,将来可能会被删除或更改。有些甚至只是 API,如果它们被删除,对于一般开发者来说并没有什么影响,而谷歌也没必要针对这些改动通知广大开发者,我们都知道,Android系统的代码变化很频繁的,每一个小改动就通知一下,特别麻烦。
为什么要使用隐藏的 API?
虽然谷歌隐藏API的原因很简单,但是开发者使用隐藏API的目的各不一样。有的开发者希望使用一项新功能,但是谷歌并没有官方公开它的使用,这个时候开发者可以通过调用隐藏API提前适配该功能。另外,对于一些系统应用的开发者,使用谷歌的API能实现更灵活的特性,比如做SystemUI和锁屏的开发者,可以通过访问隐藏API获取更多的功能