自动下载安装更新程序

Context.MODE_WORLD_READABLE,让安装程序可以有权限安装此文件。
下载代码如下:
path:网络url
apkname:你希望保存的文件名称


[java]  view plain copy
  1. public void downloadApktoappDir(String path,String apkname) throws IOException{  
  2.      URL url;  
  3.      FileOutputStream fos = null;  
  4.      BufferedInputStream bis = null;  
  5.      InputStream is = null;  
  6.    try {  
  7.        url = new URL(path);  
  8.        HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
  9.        conn.setConnectTimeout(5000);  
  10.        // 获取到文件的大小  
  11.        int size = conn.getContentLength();  
  12.        is = conn.getInputStream();  
  13.   
  14.        fos = openFileOutput(apkname,  
  15.        Context.MODE_WORLD_READABLE);  
  16.        bis = new BufferedInputStream(is);  
  17.        byte[] buffer = new byte[1024];  
  18.        int len;  
  19.        int total = 0;  
  20.          while ((len = bis.read(buffer)) != -1) {  
  21.              fos.write(buffer, 0, len);  
  22.              // 获取当前下载量  
  23.              total += len;  
  24.          }  
  25.    } catch (MalformedURLException e) {  
  26.        // TODO Auto-generated catch block  
  27.        e.printStackTrace();  
  28.    } catch (IOException e) {  
  29.        // TODO Auto-generated catch block  
  30.        e.printStackTrace();  
  31.    }finally{  
  32.        fos.close();  
  33.        bis.close();  
  34.        is.close();  
  35.    }  
  36.  }  


 
 
 

启动安装程序:

apkname:是保存文件时的文件名,

在需要进行升级的地方调用下面函数即可。

[html]  view plain copy
  1.   public void installApkFromLocalPath(String apkname){  
  2.    Intent intent = new Intent();  
  3.    intent.setAction(Intent.ACTION_VIEW);  
  4.    //first method  
  5.    intent.setDataAndType(  
  6.    Uri.parse("file://"+getApplicationContext().getFilesDir().getAbsolutePath() + "/" + apkname),  
  7.    "application/and.android.package-archive");  
  8.    startActivity(intent);  
  9.    //second method  
  10. //   intent.setDataAndType(  
  11. //   Uri.fromFile(  
  12. //           new File(getApplicationContext().getFilesDir().getAbsolutePath() + "/" + apkname)),  
  13. //           "application/and.android.package-archive");  
  14. //   startActivity(intent);  
  15.   
  16.   }  

这样就可以实现再没有sd卡的条件下也可以顺利的升级自己的应用程序了。

你可能感兴趣的:(自动下载安装更新程序)