我需要更新我的Android应用程序。在程序内部,我下载了新版本。如何通过下载(以编程方式)下载新版本来替换当前版本?
URL url = new URL("http://www.mySite.com/myFolder/myApp.apk");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try
{
FileOutputStream fos = this.getApplicationContext().openFileOutput("myApp.apk", Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE);
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
StringBuilder sb = new StringBuilder();
byte[] buffer = new byte[8192];
int len;
while ((len = in.read(buffer)) != -1)
{
// EDIT - only write the bytes that have been written to
// the buffer, not the whole buffer
fos.write(buffer, 0, len); // file to save app
}
fos.close();
.... here I have the file of new app, now I need use it
答案 0 :(得分:16)
如果更新的apk具有相同的包名称并使用相同的密钥签名,则只需发送一个将调用默认安卓程序的intent。已安装的apk将被覆盖。
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File(pathToApk));
intent.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(intent);