应用安装系列的文章包含以下内容:
- Android apk安装 卸载 升级
- 静默安装
- Android apk各种安装方式
一、通过Intent消息机制发送消息,调用系统应用进行,实现apk的安装/卸载
1、调用系统的安装应用,让系统自动进行apk的安装
String fileName = "/data/data/com.zlc.ipanel.operate/FileOperate.apk";
Uri uri = Uri.fromFile(new File(fileName));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(intent);
上诉安装不仅可以安装新的apk(从无到有),也可以用于更新旧的apk(版本更新),在进行版本更新的时候,必须保证两个apk的签名是一致的。
- 如果是一般应用,安装到data/分区下面,新的apk会替换旧的apk。
- 如果是系统应用,一般安装到system/app下面,更新之后, system/app/下的旧apk仍然存在,系统会将新的apk被复制到data/app下。虽然同时存在两新旧apk,但运行时系统选择data分区的新apk运行, 如果执行卸载则是删除data分区的apk,再次启动程序运行的是system目录下旧的apk。
2、启动系统的卸载应用,让系统自动卸载apk
//通过程序的包名创建URI
Uri packageURI = Uri.parse("package:com.zlc.ipanel");
//创建Intent意图
Intent intent = new Intent(Intent.ACTION_DELETE,packageURI);
//执行卸载程序
startActivity(intent);
与apk安装不同的是,Intent消息这里改了:ACTION_DELETE,apk安装使用的是(ACTION_VIEW)
二、通过调用系统提供的接口packageManager对apk进行卸载、安装、获取权限等(静默安装)
- 需要平台签名(写个Android.mk在源码下编译最省事,当然网上也有很多其他方法,比如:singapk命令行签名)
- 由于调用的是未公开的API,所以需要引入源码(仅仅做一个马甲,不参与编译)
- 在AndroidManifest.xml添加安装apk的权限
<uses-permission android:name="android.permission.INSTALL\_PACKAGES" />
- 如果升级失败出现 Unab


1万+

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



