java获取apk启动activity_兼容 Android 10 启动 APK 实现方案

背景

我们想启动 APK 程序,有很多种方法,可以使用 Intent,也可以使用 adb shell 命令来启动,还有通过反射来启动 APk 程序。

我们这里主要讨论通过反射的方式来启动 apk 程序。Android10 之前,我们通过反射来启动 APK,反射的是 startActivityAndWait(…) 方法,该方法是在 IActivityMessage.java 实现的,通过来启动 APk 程序。

在 Android10 的时候,该方案不太适用,需要反射 shellCommand(…) 来启动 Android 系统 10 的 APK 程序。

本方案是基于 AM 启动 Activity 的方式来实现的。

核心技术方案和原理图

Android 10 为了增加安全性 IActivityMessage.java 类去掉了,变为 IActivityMessage.aidl 文件,其中 startActivityAndWait(…) 方法转移到了 ActivityManagerServer.java 服务类中。所以,我们不能使用 IActivityMessage.java 去执行 startActivityAndWait(…) 方法。

Android 10 AM.java 启动源码:

ce949409afee63996584f2a880d99421.png

Android 10 原先 AM.java 功能逻辑转移到 ActivityManagerShellCommand.java 源码如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值