private boolean installApkFile(File apkFile)
{
try {
PackageInstaller packageInstaller = mPackageManager.getPackageInstaller();
PackageInstaller.SessionParams params = new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL);
int sessionId = packageInstaller.createSession(params);
PackageInstaller.Session session = packageInstaller.openSession(sessionId);
if(!apkFile.exists())
{
Logg.d("未找到应用程序安装文件!");
return false;
}
try(InputStream in = new FileInputStream(apkFile);OutputStream out = session.openWrite("app",0,-1))
{
byte[] buffer = new byte[65536];
int c;
while((c = in.read(buffer)) != -1)
{
out.write(buffer,0,c);
}
session.fsync(out);
}
session.commit(PendingIntent.getBroadcast(ServerCommunicationService.this,0,new Intent("INSTALL_COMPLETE"), 0).getIntentSender());
Logg.d("应用程序安装完成!");
} catch (IOException e) {
e.printStackTrace();
return false;
}
apkFile.setWritable(true);
boolean isDelete = apkFile.delete();
if(isDelete)
Logg.d("应用程序源文件删除成功!");
else
Logg.d("应用程序源文件删除失败!");
return true;
}
02-17
2651
