APK的下载更新安装

来源:互联网 发布:雷蛇2000 mac驱动 编辑:程序博客网 时间:2024/05/20 06:23

一般的安卓app都有自动更新功能,实现app的更新,以让用户体验新版本的功能。
代码比较简单,当用户进入app中,首先会检验当前app的版本号与服务器的版本号,如果当前版本号小于服务器的版本号,则提示用户更新app。

 /**             * 获取到当前的本地版本             */            UpdateInformation.localVersion = MyApplication                    .getInstance()                    //包管理独享                    .getPackageManager()                    //包信息                    .getPackageInfo(                            MyApplication.getInstance()                                    .getPackageName(), 0).versionCode;            /**             * 获取到当前的版本名字             */            UpdateInformation.versionName = MyApplication                    .getInstance()                    .getPackageManager()                    .getPackageInfo(                            MyApplication.getInstance()                                    .getPackageName(), 0).versionName;

通过PackageInfo这个类可以得到app相应的一些信息;
下面来看具体下载apk的代码,这里我使用AsyncTask来执行异步任务,首先把一个最新的apk放到服务器端的根目录下(root);这里我就不做说明了哈。

class DowoLoadTask extends AsyncTask<Void,Void,Void>{        @Override        protected void onPreExecute() {            super.onPreExecute();        }        @Override        protected Void doInBackground(Void... params) {            try {                URL url = new URL("http://10.88.88.88:8080/gpay/Chamberlain.apk");                HttpURLConnection connection = (HttpURLConnection) url.openConnection();                connection.setDoOutput(true);                connection.setDoInput(true);                connection.setRequestMethod("GET");                connection.setConnectTimeout(5000);                if(connection.getResponseCode()==200){                    fileMax =  connection.getContentLength();                    InputStream is = connection.getInputStream();                    byte buffer[] = new byte[1024];                    int length = 0;                    do{                        length = is.read(buffer);                        Log.e("length",length+"");                        if(length<0){                            downloadFinish = 100;                            break;                        }                        fos.write(buffer,0,length);                        progress = progress + length;                        Log.e("fileMax", fileMax+"");                        Log.e("progressssss",progress+ "");                        double progree = ((double)progress / (double)fileMax);                        Log.e("progreeeeeeeee",progree+"");                        int pro = (int) (progree * 100);                        Log.e("progresss",pro+"");                        download_handler.sendEmptyMessage(pro);                    }while(true);                }            } catch (Exception e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(Void aVoid) {            if(downloadFinish == 100){                Intent intent = new Intent(Intent.ACTION_VIEW);                intent.setDataAndType(Uri.parse("file://" + download_file.getAbsolutePath()),"application/vnd.android.package-archive");                SecondActivity.this.startActivity(intent);            }            super.onPostExecute(aVoid);        }    }

然后通过handler来改变progressBar的进度

 private Handler download_handler = new Handler(){        @Override        public void handleMessage(Message msg) {            progressBar.setProgress(msg.what);            super.handleMessage(msg);        }    };

代码看起来很简单,项目截图如下:
提示下载
这里写图片描述

下载完成后开始安装apk
这里写图片描述

这块引用的事别人的图片! 介绍完毕。哈哈

0 0
原创粉丝点击