在系统PackageInstall的基础上面实现静默安装的功能
本文是定制系统中添加自定义系统服务上面的接口,供应用不需要申请权限和不需要系统签名调用都能成功安装Apk
首先看一看原生的安装流程。代码位于frameworks/base/packages/PackageInstaller/这个目录下面。
在自定义服务添加一个接口,传入Apk文件路径。
在这里我的实现方式是通过aidl调用PackageInstall这个包下面的服务,进入安装。好处就是权限什么的都不需要去处理。只要通过文件管理器里面点击能安装的,静默安装就能安装。好验证。
首先需要创建aidl
frameworks/base/core/java/android/app/devicemanger/IDeviceManagerApp.aidl
package android.app.devicemanager;
/** @hide */
interface IDeviceManagerApp {
boolean install(String apkFilePath);
}
实现功能
然后创建实现类InstallService.java