小花招解决Android 9 Pie 不能反射隐藏API限制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小花招解决Android 9 Pie 不能反射隐藏API限制相关的知识,希望对你有一定的参考价值。

参考技术A android 9开始,系统会阻止开发者调用非SDKAPI,比如ActivityThread.currentActivityThread(),那有没有办法绕过这些限制呢?

首先说一下Google限制调用的原理:

就一句话:如果不是系统类,且API处于黑名单,禁止调用。

依据上述原理,可以破坏第一个条件,即通过系统类的身份去调用隐藏API。

请看如下工具类,我们通过反射去获取Class.class类上getDeclaredMethod方法,获取到的Method可以称为
“元反射方法”,通过“元反射方法” 去调用隐藏API,就意味着调用者是java.lang.Class,这个类属于系统类,可以正常调用!!!

下面本人写的工具类在Android 10上亲测有效,拿走不谢,哈哈!

如果对你有帮助,顺手点个赞哦!

以上是关于小花招解决Android 9 Pie 不能反射隐藏API限制的主要内容,如果未能解决你的问题,请参考以下文章

移动: Android 9 “Pie”发布

Android(9)Pie中如何允许所有网络连接类型HTTP和HTTPS?

如何在 Android 9.0(PIE) 中获取 WIFI SSID?

Android Api(Okhttps)未在android 9(pie)及更高版本中调用[重复]

为啥 Android Studio 不会在 Android Pie (9.0) 上运行应用程序?

Android 9 (Pie),Context.startForegroundService() 没有调用 Service.startForeground():ServiceRecord