- 执行静默安装,正常状态下,前台无任何反应,APP在后台完成安装。该功能一般也被称为“后台安装”,实现该功能需要ROOT
- 执行普通安装,将会弹出确认安装的提示框,与在文件管理器中打开APK文件实现安装
静默安装
private void silentInstall(final String path) {
new Thread(new Runnable() {
@Override
public void run() {
DataOutputStream out = null;
BufferedReader errorStream = null;
try {
//申请su权限
Process process = Runtime.getRuntime().exec("su");
out = new DataOutputStream(process.getOutputStream());
//执行pm install 命令
String command = "pm install -r " + path + "\n";
out.write(command.getBytes(Charset.forName("UTF-8")));
out.flush();
out.writeBytes("exit\n");
out.flush();
process.waitFor();
errorStream = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String msg = "";
String line;
while ((line = errorStream.readLine()) != null) {
msg += line;
}
Log.i(TAG, "SilentInstall: "+msg);
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
} finally {
try {
if (out != null) {
out.close();
}
if (errorStream != null) {
errorStream.close();
}
} catch (IOException e) {
Log.e(TAG, e.getMessage(), e);
}
}
}
}).start();
}
普通安装
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(
Uri.fromFile(new File(apkPath)),
"application/vnd.android.package-archive"
);
context.startActivity(intent);