app更新代码

使用okttputil网络请求框架检测更新


public void checkUpdate(Activity activity,  final boolean isShowTip) {
     OkHttpUtils.get().url(Url.UPDATE_VERSION).build().execute( new StringCallback() {
         @Override
         public void onError(Call call, Exception e,  int id) {
 
         }
 
         @Override
         public void onResponse(String response,  int id) {
             final JsonData jsonData = JsonData.create(response);
             int versionCode = jsonData.optInt( "version" );
             int currentVersionCode = SystemUtils.getAppVersionCode(context);
             if (versionCode > currentVersionCode) {
                 AlertDialog.Builder builder =  new AlertDialog.Builder(context);
                 builder.setTitle( "更新" );
                 builder.setMessage( "检测到有更新,是否立刻更新?" );
                 builder.setNegativeButton( "稍后更新" new DialogInterface.OnClickListener() {
 
                     @Override
                     public void onClick(DialogInterface dialog,  int which) {
                     }
                 });
                 builder.setPositiveButton( "立刻更新" new DialogInterface.OnClickListener() {
 
                     @Override
                     public void onClick(DialogInterface dialog,  int which) {
                         if (!StringUtils.isWifi(context)) {
                             AlertDialog.Builder builder =  new AlertDialog.Builder(context);
                             builder.setTitle( "提示" );
                             builder.setMessage( "您当前正在使用移动网络,继续下载将消耗流量" );
                             builder.setNegativeButton( "取消" new DialogInterface.OnClickListener() {
 
                                 @Override
                                 public void onClick(DialogInterface dialog,  int which) {
 
                                 }
                             });
                             builder.setPositiveButton( "确定" new DialogInterface.OnClickListener() {
 
                                 @Override
                                 public void onClick(DialogInterface dialog,  int which) {
                                     downLoadApk(jsonData.optString( "download" ));
                                 }
                             });
                             builder.create().show();
                         else {
                             downLoadApk(jsonData.optString( "download" ));
                         }
                     }
                 });
                 builder.create().show();
             else {
                 if (isShowTip) {
                     ToastUtils.show(context,  "当前已是最新版本" );
                 }
             }
         }
 
     });
}
 
/*
    * 从服务器中下载APK
*/
   protected void downLoadApk( final String url) {
       final ProgressDialog pd;     //进度条对话框
       pd =  new ProgressDialog( this );
       pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
       pd.setMessage( "正在下载更新" );
       pd.show();
       new Thread() {
           @Override
           public void run() {
               try {
                   File file = DownLoadManager.getFileFromServer(url, pd);
                   sleep( 3000 );
                   installApk(file);
                   pd.dismiss();  //结束掉进度条对话框
               catch (Exception e) {
                   Toast.makeText(context,  "下载失败!" ,
                           Toast.LENGTH_SHORT).show();
                   e.printStackTrace();
               }
           }
       }.start();
   }
 
   //安装apk
   protected void installApk(File file) {
       Intent intent =  new Intent();
       //执行动作
       intent.setAction(Intent.ACTION_VIEW);
       //执行的数据类型
       intent.setDataAndType(Uri.fromFile(file),  "application/vnd.android.package-archive" );
       startActivity(intent);
   }

这里是下载数据的代码DownLoadManager.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
 
import android.app.ProgressDialog;
import android.os.Environment;
 
public class DownLoadManager {
 
    public static File getFileFromServer(String path, ProgressDialog pd) throws Exception {
         //如果相等的话表示当前的sdcard挂载在手机上并且是可用的
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            URL url = new URL(path);
             HttpURLConnection conn = (HttpURLConnection) url.openConnection();
             conn.setConnectTimeout( 5000 );
             //获取到文件的大小
             pd.setMax(conn.getContentLength());
             InputStream is = conn.getInputStream();
            File file = new File(Environment.getExternalStorageDirectory(), "某某某.apk");
            FileOutputStream fos = new FileOutputStream(file);
            BufferedInputStream 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;
                 //获取当前下载量
                 pd.setProgress(total);
             }
             fos.close();
             bis.close();
             is.close();
            return file;
        else {
            return null;
         }
     }
}
本文参考地址: http://blog.it985.com/19585.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值