当前位置:操作系统 > 安卓/Android >>

android下载文件到应用的文件目录并安装

[html]
<pre name="code" class="html"> 
在进行应用开发时,我们的产品需要升级,如果升级的产品放在服务器上我们就需要下载,并进行安装。一般可以选择下载到sd卡中进行安装,
但是对于没有sd卡的设备进行安装升级怎么办,
本文提供了一种方法,将下载的文件放到应用文件目录下然后通过设置为Context.MODE_WORLD_READABLE,让安装程序可以有权限安装此文件。
下载代码如下:
path:网络url
apkname:你希望保存的文件名称


[java]
public void downloadApktoappDir(String path,String apkname) throws IOException{ 
     URL url; 
     FileOutputStream fos = null; 
     BufferedInputStream bis = null; 
     InputStream is = null; 
   try { 
       url = new URL(path); 
       HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
       conn.setConnectTimeout(5000); 
       // 获取到文件的大小 
       int size = conn.getContentLength(); 
       is = conn.getInputStream(); 
 
       fos = openFileOutput(apkname, 
       Context.MODE_WORLD_READABLE); 
       bis = new BufferedInputStream(is); 
       byte[] buffer = new byte[1024]; 
       int len; 
       int total = 0; 
         while ((len = bis.read(buffer)) != -1) { 
             fos.write(buffer, 0, len); 
             // 获取当前下载量 
             total += len; 
         } 
   } catch (MalformedURLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
   } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
   }finally{ 
       fos.close(); 
       bis.close(); 
       is.close(); 
   } 
 } 


 
启动安装程序:

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

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

[html]
  public void installApkFromLocalPath(String apkname){ 
   Intent intent = new Intent(); 
   intent.setAction(Intent.ACTION_VIEW); 
   //first method 
   intent.setDataAndType( 
   Uri.parse("file://"+getApplicationContext().getFilesDir().getAbsolutePath() + "/" + apkname), 
   "application/and.android.package-archive"); 
   startActivity(intent); 
   //second method 
//   intent.setDataAndType( 
//   Uri.fromFile( 
//           new File(getApplicationContext().getFilesDir().getAbsolutePath() + "/" + apkname)), 
//           "application/and.android.package-archive"); 
//   startActivity(intent); 
 
  } 

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


摘自 weidawei0609的专栏
补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,