PackageInstaller 类安装/卸载应用

这篇博客介绍了在Android应用商店中遇到的问题,当系统升级到Android P后,原有的安装应用方法报错。作者推荐使用Android API 21新增的PackageInstaller类来实现应用的安装和卸载功能,并提供了具体实现的代码示例。对于非系统应用,需要获取相应的权限才能执行这些操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:开发手机应用转到 TV 应用小半年了,最头疼的就是焦点问题。今天不说焦点,来看看应用商店的安装 / 卸载功能。


项目是中途接手的,安装方法一直使用的是 packageManager.installPackage(Uri var1, PackageInstallObserver var2, int var3, String var4) 这个 API,实现静默安装的功能。直到系统升级为 Android P,安装方法报错:

java.lang.NoClassDefFoundError: Failed resolution of: Landroid/content/pm/IPackageInstallObserver$Stub;

经查看 API 最新文档,查阅到注解“deprecated replaced by {@link PackageInstaller}”,需要改用 PackageInstaller 类来实现安装/卸载功能,Android API 21 添加了这个类。

具体实现:

注:因为应用商店做的是 系统应用,不需要在格外的去获取系统权限,若不是系统级应用,需要先获取对应安装/卸载权限再进行操作。

  1. 安装
/**
 * @param filepathApk 文件路径
 */
private void installPackage(String filepathApk) {
	try {
		PackageInstaller pi = mContext.getPackageManager().getPackageInstaller();
		//给定模式,创建新的参数,创建新安装会话,返回唯一 Id
		int sessionId= pi.createSession(new PackageInstaller.SessionParams(Pa
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值