Android-下载更新方法记录

今天重新更改了公司项目下载更新的办法。感觉功能和界面还算可以,特此记录下来。

第一步:画更新的界面

无图说屌,先上效果图,我是从androidstudioUI截图过来了,效果如下。中间留白写更新特新或者固定内容,两个按钮留白为取消和更新。请自己添加文本内容。

Android-下载更新方法记录_第1张图片
弹框样式.png

布局代码如下:




    

        

            

            
        

        
             

                

                
            
    

再布局中编写了两个drawable属性btn_gem_green和dialog_bg
dialog_bg代码如下:



   
   
   

btn_gem_green代码如下:




    
    
            
                    

                    
                
        
    
    

            
            
                    

                    
                    
                    
                
        


第二步:开始写弹窗代码

该处代码业务是检测后弹出窗口,三个参数分别为上下文,弹窗标题,和弹窗更新内容,因里面有别的代码内容,没有删除掉,复制后如果有找不到的,请删除那些找不到的没用代码

 public static void openDownDialog(final Context context, String title, String msg) {
        dialog = new AlertDialog.Builder(context).create();
        dialog.setCancelable(false);
        dialog.show();

        Window window = dialog.getWindow();
        window.setContentView(R.layout.prompt_alertdialog);
        LinearLayout ll_title = (LinearLayout) window
                .findViewById(R.id.ll_title);
        ll_title.setVisibility(View.VISIBLE);
        TextView tv_title = (TextView) window.findViewById(R.id.tv_title);
        getInstance().pb_download = (NumberProgressBar) window
                .findViewById(R.id.pb_splash_download);
        getInstance().pb_download.setOnProgressBarListener(getInstance());
        tv_title.setText(title);
        TextView tv_content = (TextView) window.findViewById(R.id.tv_content);
        tv_content.setMovementMethod(new ScrollingMovementMethod());
        tv_content
                .setText(msg);
        final TextView tv_sure = (TextView) window.findViewById(R.id.tv_sure);
        final TextView tv_cancle = (TextView) window
                .findViewById(R.id.tv_cancle);
        tv_cancle.setText("取消");
        tv_cancle.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                dialog.cancel();
                //关闭程序
                System.exit(0);

            }
        });
        tv_sure.setText("更新");
        tv_sure.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                tv_cancle.setEnabled(false);
                tv_sure.setEnabled(false);
                dialog.cancel();
                Intent intent = new Intent(context, DownloadActivity.class);
                intent.putExtra("url", apkurl);
                intent.putExtra("apkversion", apkversion);
                context.startActivity(intent);
            }
        });
    }
因为公司项目更新页面代码原因,无法在本页面进行下载操作,所以当点击更新的时候,我是进行了一个新的activity页面跳转做的这个操作。

第三步:开始写下载的代码

下载使用的是xutlis的下载方法。如果我这个写的个人看的不清不楚的,可自行查看xutlis的文档,官方的总比个人更加详细嘛。。。
代码没必要完全复制,主要还是提供一个思路。实现代码都已经注释了,希望能帮助到你们。

 /**
     * 下载apk
     *
     * @param url
     * @param strFile
     */
    public void downLoadNewApk(final String url, final String strFile) {


        if (!fileIsExists(strPath + strFile)) {

            File file = new File(strPath);
             utils.download(getIntent().getStringExtra("url"), file.getPath() + "/XXXXX" + getIntent().getStringExtra("apkversion") + ".apk", new RequestCallBack() {

                @Override
                public void onStart() {
                    super.onStart();
                    ToastUtil.show(DownloadActivity.this, "正在下载...");
                }

                @Override
                public void onSuccess(ResponseInfo responseInfo) {
                    ToastUtil.show(DownloadActivity.this, "下载成功");
                    //打开文件
                    Intent intent = DownloadActivity.getApkFileIntent(strPath + strFile);
                    DownloadAPK.mActivity.startActivity(intent);
                    finish();
                }

                @Override
                public void onFailure(HttpException e, String s) {
                    ToastUtil.show(DownloadActivity.this, "下载失败");
                  
                }

                @Override
                public void onLoading(long total, long current, boolean isUploading) {
                    pb_download.setVisibility(View.VISIBLE);// 设置进度的显示
                    int max = (int) total;
                    int progress = (int) current;
                    pb_download.setMax(max);// 设置进度条的最大值
                    pb_download.setProgress(progress);// 设置当前进度
                    super.onLoading(total, current, isUploading);
                }
            });
        } else {
            ToastUtil.show(DownloadActivity.this, "与服务器连接失败!");
        }

    }

你可能感兴趣的:(Android-下载更新方法记录)