静默安装
所谓静默安装,就是指在用户不之情的情况下安装app,打开app,卸载app.
- 需要在一个app中利用网络请求下载另一个需要静默安装的app
- 需要用到RootTools.jar这个Lib包
- 利用xUtils中的http来下载.apk文件
- *最后通过命令安装,打开,卸载,删除apk.
静默安装具体代码的实现
MainActivity中的初始化中调用一下方法
HttpUtils http = new HttpUtils();
http.download("http://192.168.1.100:8080/xxx.apk", "/mnt/sdcard/jmlt.apk", new RequestCallBack<File>() {
@Override
public void onSuccess(ResponseInfo<File> arg0) {
//下载成功
System.out.println("onSuccess");
//3, 打开apk
//4, 卸载apk
//静默安装
try {
Runtime.getRuntime().exec("su");
//下面的命令依附在su管理员命令里
//2, 安装apk
RootTools.sendShell("pm install /mnt/sdcard/xxx.apk", 5000);
//3, 打开apk
RootTools.sendShell("am start -n com.xiaohao.xxx/com.xiaohao.xxx.MainActivity", 5000);
//4, 卸载apk
RootTools.sendShell("pm uninstall com.xiaohao.xxx", 5000);
//5,删除安装包apk
RootTools.sendShell("rm -r /mnt/sdcard/xxx.apk", 5000);
/*new Thread(){
public void run() {
//4, 卸载apk
try {
SystemClock.sleep(10000);//10秒后 删除app
RootTools.sendShell("pm uninstall com.xiaohao.xxx", 5000);
//5,删除安装包apk
RootTools.sendShell("rm -r /mnt/sdcard/xxx.apk", 5000);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RootToolsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();*/
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RootToolsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFailure(HttpException arg0, String arg1) {
System.out.println("onFailure");
//下载失败
System.out.println(arg0);
}
});
}
备注
最后要记得在清单文件中添加上网权限和访问文件夹的权限,否则静默安装不成功.