Android P+通过反射调用系统API实现高级功能

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

通过反射调用系统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
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值