android自动更新软件版本

根据网上的然后小改
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;


import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ProgressBar;


public class UpdateManager {  
   private Context mContext;  
   private final String updateMsg = "亲,有新版本,要更新吗!";            //下载消息提示  
   private Dialog noticeDialog;                                        //下载提示对话框  
   private Dialog downloadDialog;                                      //下载进度对话框  
   private ProgressBar mProgressBar;                                   //进度条  
   private Boolean interceptFlag = false;                              //标记用户是否在下载过程中取消下载  
   private Thread downloadApkThread = null;                            //下载线程  
   private final String apkUrl = "http://www.xxx/xxx.apk";       //apk的URL地址  
   private final String savePath = "/sdcard/UpdateDemo/";              //下载的apk存放的路径  
   private final String saveFileName = savePath + "xxx.apk";   //下载的apk文件  
   private int progress = 0;                                           //下载进度  
   private final int DOWNLOAD_ING = 1;                                 //标记正在下载  
   private final int DOWNLOAD_OVER = 2;                                //标记下载完成  
   private final String TAG="版本更新";  
   //日志打印标签  
   private Handler mhandler = new Handler() {                          //更新UI的handler  
 
       @Override  
       public void handleMessage(Message msg) {  
           super.handleMessage(msg);  
           switch (msg.what) {  
           case DOWNLOAD_ING:  
               // 更新进度条  
               mProgressBar.setProgress(progress);  
               break;  
           case DOWNLOAD_OVER:  
               downloadDialog.dismiss();  
               installApk();  
               //安装  
               break;  
           default:  
               break;  
           }  
       }  
 
   };  
     
   /* 
    * 构造方法 
    */  
   public UpdateManager(Context context) {  
       this.mContext = context;  
   }  
 
   /* 
    * 检查是否有需要更新,具体比较版本xml 
    */  
   public void checkUpdate() {  
       // 到服务器检查软件是否有新版本  
       //如果有则  
       showNoticeDialog();  
   }  
 
   /* 
    * 显示版本更新对话框 
    */  
   private void showNoticeDialog() {  
       AlertDialog.Builder builder = new Builder(mContext);  
       builder.setTitle("版本更新");  
       builder.setMessage(updateMsg);  
       builder.setPositiveButton("更新", new OnClickListener() {  
 
           public void onClick(DialogInterface dialog, int which) {  
               noticeDialog.dismiss();  
               showDownloadDialog();  
           }  
       });  
       builder.setNegativeButton("以后再说", new OnClickListener() {  
 
           public void onClick(DialogInterface dialog, int which) {  
               noticeDialog.dismiss();  
           }  
       });  
       noticeDialog = builder.create();  
       noticeDialog.show();  
 
   }  
 
   /* 
    * 弹出下载进度对话框 
    */  
   private void showDownloadDialog() {  
       AlertDialog.Builder builder = new Builder(mContext);  
       builder.setTitle("软件更新");  
       final LayoutInflater inflater = LayoutInflater.from(mContext);  
       View v = inflater.inflate(R.layout.progress, null);  
       mProgressBar = (ProgressBar) v.findViewById(R.id.updateProgress);  
       builder.setView(v);  
       builder.setNegativeButton("取消", new OnClickListener() {  
 
           public void onClick(DialogInterface dialog, int which) {  
               downloadDialog.dismiss();  
               interceptFlag = true;  
           }  
       });  
       downloadDialog = builder.create();  
       downloadDialog.show();  
       downloadLatestVersionApk();  
 
   }  
     
   /* 
    * 下载最新的apk文件 
    */  
   private void downloadLatestVersionApk() {  
       downloadApkThread = new Thread(downloadApkRunnable);  
       downloadApkThread.start();  
   }  
     
   //匿名内部类,apk文件下载线程  
   private Runnable downloadApkRunnable = new Runnable() {  
 
       public void run() {  
           try {  
               URL url = new URL(apkUrl);  
               HttpURLConnection conn = (HttpURLConnection) url  
                       .openConnection();  
               conn.setConnectTimeout(5*1000);
               conn.connect();  
               int length = conn.getContentLength();  
               Log.e(TAG, "总字节数:"+length);  
               InputStream is = conn.getInputStream();  
               File file = new File(savePath);  
               if (!file.exists()) {  
                   file.mkdir();  
               }  
               File apkFile = new File(saveFileName);  
               FileOutputStream out = new FileOutputStream(apkFile);  
               int count = 0;  
               int readnum = 0;  
               byte[] buffer = new byte[1024];  
               do {  
                   readnum = is.read(buffer);  
                   count += readnum;  
                   progress = (int) (((float) count / length) * 100);  
                   Log.e(TAG, "下载进度"+progress);  
                   mhandler.sendEmptyMessage(DOWNLOAD_ING);  
                   if (readnum <= 0) {  
                       // 下载结束  
                       mhandler.sendEmptyMessage(DOWNLOAD_OVER);  
                       break;  
                   }  
                   out.write(buffer,0,readnum);  
               } while (!interceptFlag);  
               is.close();  
               out.close();  
           } catch (MalformedURLException e) {  
               e.printStackTrace();  
           } catch (IOException e) {  
               e.printStackTrace();  
           }  
 
       }  
   };  
   /* 
    * 安装下载的apk文件 
    */  
   private void installApk() {  
       File file= new File(saveFileName);  
       if(!file.exists()){  
           return;  
       }  
       Intent intent= new Intent(Intent.ACTION_VIEW);  
       intent.setDataAndType(Uri.parse("file://"+file.toString()), "application/vnd.android.package-archive");  
       mContext.startActivity(intent);  
   }  
}  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要更新Android Studio的版本,可以按照以下步骤操作: 1. 打开Android Studio软件。 2. 点击菜单栏中的"Help"选项。 3. 从下拉菜单中选择"Check for Updates"。 4. 如果有可用的更新Android Studio会自动下载并安装最新版本。 5. 安装完成后,需要重启Android Studio才能生效。 需要注意的是,更新Android Studio的版本可能会导致某些插件或库不兼容,因此在更新前最好备份项目文件和设置。此外,为了保持项目的稳定性,建议在更新前先查看更新日志,了解更新的内容和影响。 ### 回答2: Android Studio 是由谷歌开发的一款用于开发Android应用程序的集成开发环境(IDE)。每隔一段时间,谷歌会发布新的Android Studio版本来提供更好的性能和功能。 更新Android Studio版本有以下几个原因: 1. 新功能和改进:每个新的Android Studio版本都会引入新的功能和改进,以提供更好的用户体验和开发效率。例如,新版本可能会增加对最新Android操作系统版本的支持,提供新的布局编辑器,改进性能分析工具等等。 2. Bug修复:每个软件都会存在一些bug和问题,通过升级到新版本可以修复已知问题并提高稳定性。新版本通常会修复一些老版本中存在的问题,并进行质量和稳定性改进。 3. 安全性更新:随着技术的发展,恶意软件和黑客攻击也在不断增加。通过更新Android Studio版本,可以获得最新的安全补丁和功能,以保护开发环境和应用程序的安全性。 4. 支持最新的开发工具和库:Android Studio是开发Android应用程序的首选工具,更新版本通常会提供对最新的开发工具和库的支持。这意味着开发者可以使用最新的API和功能来创建更先进,更具创新性的应用程序。 为了更新Android Studio版本,可以按照以下步骤进行: 1. 打开Android Studio,并转到“帮助”菜单。 2. 在下拉菜单中,选择“检查更新”选项。 3. Android Studio将会连接到服务器,检查是否有新版本可用。 4. 如果有新版本可用,Android Studio将提示您进行更新。点击“更新”按钮以开始下载和安装新版本。 5. 安装完成后,重新启动Android Studio以使更改生效。 总之,更新Android Studio版本是保持最新技术和功能的最佳方法,以提高开发效率和应用程序质量。 ### 回答3: Android Studio 是一个为 Android 应用开发提供的集成开发环境(IDE)。它的更新版本是为了修复之前版本的 bug、改进功能、增加新特性,从而使开发者能够更高效、更方便地开发 Android 应用程序。 每个新的 Android Studio 版本都会带来一些新的特性和改进。例如,最新版本Android Studio 4.0 引入了一种全新的布局编辑器,称为 Compose,它能够帮助开发者以更直观的方式创建用户界面。此外,它还增强了 Kotlin 语言的支持,包括新的代码模板和自动导入功能,以及一些性能优化,如更快的构建和启动时间。 更新 Android Studio 可以帮助开发者保持最新的开发环境,并利用新功能和改进来提高开发效率。更新版本通常会修复一些已知的 bug,并引入更好的性能和稳定性。此外,Android Studio 的更新版本通常会配合最新的 Android SDK 发布,提供对最新 Android 平台的开发支持,包括新的 API 和功能。 当我们更新 Android Studio 时,需要注意备份项目文件和配置,以防止数据丢失。同时,更新版本的安装可能需要一些时间和网络带宽,所以我们需要考虑在合适的时间进行更新。 总之,Android Studio 的更新版本是为了改进开发者的开发体验和开发效率,并提供对最新 Android 平台的支持。及时更新 Android Studio 可以使我们能够使用最新的开发工具和技术,保持竞争优势,并提供更好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值