Android P+通过反射调用系统API实现高级功能
通过反射调用系统API已经不算是什么新鲜事了,不过在Android P之后,Google对隐藏API的限制更加严格,不能再直接通过反射去调用系统API了,必须通过特定手段先打开隐藏API的限制,具体原理可以移步另一种绕过 Android P以上非公开API限制的办法,这里我们只讲实战用法。
1. 打开隐藏API
1.1 导入FreeReflection包
新建AS项目后,打开项目的settings.gradle,在repositories闭包中添加
maven { url 'https://jitpack.io' }
然后在具体module的build.gradle中的dependencies中加入以下依赖
implementation 'com.github.tiann:FreeReflection:3.1.0'
1.2 打开隐藏API
在moudle中添加一个继承自Application的类(有关Application的相关信息请自行查阅相关文档)并在AndroidManifest.xml中注册。
例:
新建的类
public class ShellApplication extends Application {
......
}
AndroidManifest.xml中注册
<application
android:name=".ShellApplication"
......
然后需要重写Application类的attachBaseContext方法,并在这个方法中调用FreeReflection库打开隐藏API
// ignore other import
import me.weishu.reflection.Reflection;
public class ShellApplication extends Application {
@Override

本文介绍了如何在AndroidP及以上版本中,通过FreeReflection库打开隐藏API,以实现对系统服务的反射调用,重点讲解了如何获取ActivityTaskManager并调用其startActivityAndWait方法。
最低0.47元/天 解锁文章
147

被折叠的 条评论
为什么被折叠?



