Java代码实现APP普通安装卸载和静默安装卸载

两者差异

  • 执行普通安装、卸载,将会弹出确认安装、卸载的提示框,与在文件管理器中打开APK文件实现安装、卸载相同。
  • 执行静默安装、卸载,正常状态下,前台无任何反应,APP在后台完成安装和卸载。该功能一般也被称为“后台安装”。

普通安装

核心代码:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(
    Uri.fromFile(new File(apkPath)),
    "application/vnd.android.package-archive"
);
context.startActivity(intent);

普通卸载

核心代码:

Uri packageURI = Uri.parse("package:" + packageName);
Intent intent = new Intent(Intent.ACTION_DELETE, packageURI);
context.startActivity(intent);

上述代码中,packageName是目标APP的包名。

静默安装

核心代码:

private static final String SILENT_INSTALL_CMD = "pm install -r ";
String installCmd = SILENT_INSTALL_CMD + apkPath;// PM指令不支持中文
int result = -1;
DataOutputStream dos = null;
Process process = null;
try {
    process = Runtime.getRuntime().exec("su");
    dos = new DataOutputStream(process.getOutputStream());
    dos.writeBytes(installCmd + "\n");
    dos.flush();
    dos.writeBytes("exit\n");
    dos.flush();
    process.waitFor();
    result = process.exitValue();
} catch (Exception e) {
    e.printStackTrace();
} finally {
    try {
        if(dos != null) {
            dos.close();
        }
        if(process != null){
            process.destroy();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
return result;

静默卸载

核心代码:

// 如果要保留数据,需要加-k参数,但是卸载会不完全
private static final String SILENT_UNINSTALL_CMD = "pm uninstall ";
String uninstallCmd = SILENT_UNINSTALL_CMD + appPackageName;
int result = -1;
DataOutputStream dos = null;
Process process = null;
try {
    process = Runtime.getRuntime().exec("su");
    dos = new DataOutputStream(process.getOutputStream());
    dos.writeBytes(uninstallCmd + "\n");
    dos.flush();
    dos.writeBytes("exit\n");
    dos.flush();
    process.waitFor();
    result = process.exitValue();
} catch (Exception e) {
    e.printStackTrace();
} finally {
    try {
        if(dos != null) {
            dos.close();
        }
        if(process != null){
            process.destroy();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
return result;

上述代码中,appPackageName是目标APP的包名。

更多内容可参考该页面内的installuninstallsilentInstallsilentUninstall这四个方法。

时间: 2024-11-03 03:29:41

Java代码实现APP普通安装卸载和静默安装卸载的相关文章

APP流氓大法之apk 静默安装

老大要我弄个自动更新,要用到静默安装,网上找到了些大拿的代码,我拿去改吧改吧,先贴出来: Java代码   /** * 软件静默安装 * @param apkAbsolutePath apk文件所在路径 * @return 安装结果:获取到的result值<br> * * 如果安装成功的话是“ * pkg: /data/local/tmp/Calculator.apk  /nSuccess”,<br> * 如果是失败的话,则没有结尾的“Success”. */ public Str

Linux 上安装 weblogic12C (静默安装) (一)

最近负责在linux上安装weblogic,领导说要安装最新的版本,版本号为 12.1.X.开始以为和旧版安装一样,使用控制台的方式,下载bin文件,然后一步步在console执行下来就行了.万万没想到,从12C版本后, bin文件不提供了,改成全系统通用的jar文件 (generic.jar).试了半天原来那种安装方式不能用了,非得用图形界面安装.由于服务器是在其他地方,肯定不能跑到主机的地址那边.于是各种google.各种找材料, 最后终于找到一种静默方式的安装.大家看下文. PS:经过公司

LODOP安装参数 及静默安装

在cmd命令里里静默安装lodop(c-lodop不能静默安装),本人的安装文件放在D:\lodopdownload\3060\Lodop6.224_Clodop3.060,如下所示: lodop静默安装,不弹窗:D:\lodopdownload\3060\Lodop6.224_Clodop3.060\install_lodop32.exe -nowindow错误写法,c-lodop不支持该静默安装 :D:\lodopdownload\3060\Lodop6.224_Clodop3.060\CL

Android apk的安装、卸载、更新升级(通过Eclipse实现静默安装)

一.通过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.se

Android随笔之——静默安装、卸载

随笔之所以叫随笔,就是太随意了,说起来,之前的闹钟系列随笔还没写完,争取在十月结束之前找时间把它给写了吧.今天要讲的Android APK的静默安装.卸载.网上关于静默卸载的教程有很多,更有说要调用隐藏API,在源码下用MM命令编译生成APK的,反正我能力有限,没一一研究过,这里选择一种我试验成功的来讲. 静默安装.卸载的好处就是你可以偷偷摸摸,干点坏事什么的,哈哈~ 一.准备工作 要实现静默安装.卸载,首先你要有root权限,能把你的静默安装.卸载程序移动到system/app目录下. 1.用

Inno Setup 系列之先卸载之后再安装

需求使用Inno Setup打包程序之后,很多时候我们需要在安装文件之前卸载原有的程序而不是覆盖安装,本文的Code就是实现了这样的功能.如果想要在安装前先卸载,那么需要加下面代码,需要注意的是双星号里面的 `{3FC1FD05-BEC7-430A-B7DB-F07155FDE93E}` 部分的改为你们自己的.网上看到有些说_is1前面用AppName,但是我这边不行,下面code中 `{3FC1FD05-BEC7-430A-B7DB-F07155FDE93E}` 为你的程序名,可以去你的 In

innosetup的静默安装与卸载

静默安装,就是减少程序与用户的交互,一站式的安装过程(一气呵成) 1. 静默安装参数 innosetup的静默安装是通过参数来控制的 1.1.  /silent                       静默安装,但如果又报错,还是会提示,并且有进度条 1.2.  /verysilent                 静默安装,更强制,不过是否报错,都不会有任何提示 (注意:如果需要重启电脑,它会不提示而直接重启) 1.3.  /suppressmsgboxes   由 suppress(抑

Android 静默安装和智能安装的实现方法

1 简介 最近研究了Android的静默安装和智能安装,于是写博客记录一下. 静默安装就是无声无息的在后台安装apk,没有任何界面提示. 智能安装就是有安装界面,但全部是自动的,不需要用户去点击. 首先强调两点: 静默安装必须要root权限 智能安装必须要用户手动开启无障碍服务 2 原理 静默安装.卸载的原理就是利用pm install命令来安装apk,pm uninstall 来卸载apk. 智能安装是利用android系统提供的无障碍服务AccessibilityService,来模拟用户点

Linux静默安装oracle 11g

之前在oracle安装过程中碰到了很多问题,浪费了不少问题,后来有哥同事给了以下安装文档,解决了很多多问题,也提到了很多在安装过程中碰到的问题! 所以记录一下 本文档是Oracle Database 11.2.0.1 for RHEL5 Server(包括x86和x86_64平台)的静默安装指南. 所有操作无需使用图形界面. 静默安装能减少安装出错的可能性, 也能大大加快安装速度. # 后跟命令表示以操作系统下root用户操作; $ 后跟命令表示以操作系统下oracle用户操作; 1.1 上传软