实现静默安装首先手机root权限或者是system 应用
在Android 4.4版本中,静默升级代码如下
// 静默安装,1-安装成功,或没有升级文件,2-升级安装出现异常,-1-程序异常
public static int installBySlient(Context context, String filePath) {
int result = 0;
try {
File file = new File(filePath);
if (filePath == null || filePath.length() == 0
|| (file = new File(filePath)) == null
|| file.length() <= 0 || !file.exists() || !file.isFile()) {
return 1;
}
String[] args = { "pm", "install", "-r", filePath };
ProcessBuilder processBuilder = new ProcessBuilder(args);
Process process = null;
BufferedReader successResult = null;
BufferedReader errorResult = null;
StringBuilder successMsg = new StringBuilder();
StringBuilder errorMsg = new StringBuilder();
try {
process = processBuilder.start();
successResult = new BufferedReader(new InputStreamReader(
process.getInputStream()));
errorResult = new BufferedReader(new InputStreamReader(
process.getErrorStream()));
String s;
while ((s = successResult.readLine()) != null) {
successMsg.append(s);
}
while ((s = errorResult.readLine()) != null) {
errorMsg.append(s);
}
} catch (IOException e) {
e.printStackTrace();
result = 2;
} catch (Exception e) {
e.printStackTrace();
result = 2;
} finally {
try {
if (successResult != null) {
successResult.close();
}
if (errorResult != null) {
errorResult.close();
}
} catch (IOException e) {
e.printStackTrace();
}
if (process != null) {
process.destroy();
}
}
if (successMsg.toString().contains("Success")
|| successMsg.toString().contains("success")) {
result = 1;
} else {
result = 2;
}
logd("App升级信息:" + "successMsg:" + successMsg + ", ErrorMsg:" + errorMsg);
} catch (Exception e) {
result = -1;
}
return result;
}
但是在Android 7.0版本,使用这个方法会报空指针异常
只需要修改一行代码
String[] args = { "pm", "install","-i ","xxxxxx", "-r",filePath };
-i 后面的参数是应用报名
还有一种场景,就是你的应用帮别的应用实现静默升级,这里的包名还是用你的应用包名