Android版本更新

一、添加依赖xUtils3

二、Activity类:

package comqq.example.hasee.myapplication;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.NotificationCompat;
import android.util.Log;
import android.widget.Toast;
import org.json.JSONException;
import org.json.JSONObject;
import org.xutils.common.Callback;
import org.xutils.http.HttpMethod;
import org.xutils.http.RequestParams;
import org.xutils.x;
import java.io.File;

public class MainActivity extends AppCompatActivity {
    //这是服务器提供的接口
    String url="http://169.254.92.24:8080/22.txt";
    private String upgradeinfo;
    private RequestParams request;
    private String appname;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //创建请求参数.
        request = new RequestParams(url);
        x.http().get(request, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String s) {

                try {
                    JSONObject json= new JSONObject(s);
                    //得到信息
                    upgradeinfo = json.getString("upgradeinfo");
//                    //得到最新版的apk下载地址
                    final String up = json.getString("updateurl");
//                    //得到app的名字
                    appname=json.getString("appname");
//                    //得到最新版的版本号
//                    json.getString("serverVersion");
//                    //是否强制更新    用最简单的if判断就行
//                    json.getString("lastForce");
                    //得到服务器的版本号
                    String serverVersion = json.getString("serverVersion");
                    //得到应用包的管理者
                    PackageInfo pack = MainActivity.this.getPackageManager().getPackageInfo(MainActivity.this.getPackageName(), 0);
                    //从管理者里面拿到应用版本号
                    int versionCode = pack.versionCode;
                    //判断当应用版本号低于服务器的版本号,就会提示升级
                    if(versionCode<Integer.valueOf(serverVersion)){
                        Log.d("aaaa",s);
                         new AlertDialog.Builder(MainActivity.this)
                                    .setTitle("版本更新")
                                    .setIcon(R.mipmap.ic_launcher)
                                    .setMessage(upgradeinfo)
                                    .setCancelable(false)//除了对话框以外都不能点击
                                    .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialogInterface, int i) {
                                            Toast.makeText(MainActivity.this, "你不能点我的", Toast.LENGTH_SHORT).show();
                                        }
                                    }).setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {

                                    Toast.makeText(MainActivity.this, "谁叫你点我的", Toast.LENGTH_SHORT).show();
                                    //要下载的文件到这个地址
                                    final String ss= Environment.getExternalStorageDirectory().getAbsolutePath()+"/downloads/";
                                    //接口给定的最新版本下载地址
                                    RequestParams request1 = new RequestParams(up);
                                    //给要下载的文件取名字
                                    request1.setSaveFilePath(ss+appname);
                                    x.http().request(HttpMethod.GET,request1, new Callback.ProgressCallback<File>() {
                                        @Override
                                        public void onSuccess(File file) {
                                        }
                                        @Override
                                        public void onError(Throwable throwable, boolean b) {
                                        }
                                        @Override
                                        public void onCancelled(CancelledException e) {
                                        }
                                        @Override
                                        public void onFinished() {
                                        }
                                        @Override
                                        public void onWaiting() {
                                        }
                                        @Override
                                        public void onStarted() {
                                        }
                                        //long l:文件总大小, long l1,当前进度.boolean b,是否正在下载
                                        @Override
                                        public void onLoading(long l, long l1, boolean b) {
                                            //创建通知
                                            NotificationManager mNotifyManager = (NotificationManager) MainActivity.this.getSystemService(NOTIFICATION_SERVICE);
                                            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this);
                                            mBuilder.setSmallIcon(R.mipmap.ic_launcher);
                                            mBuilder.setContentTitle("版本更新");
                                            //判断是否下载完成
                                            if(l==l1){
                                                Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT).show();
                                                mBuilder.setContentText("下载完成");
                                                mNotifyManager.notify(10086, mBuilder.build());
                                                //安装下载好的APP
                                                installApk(MainActivity.this,new File(ss,appname));
                                            }else {
                                                mBuilder.setSmallIcon(R.mipmap.ic_launcher_round);
                                                mBuilder.setContentTitle("版本更新");
                                                mBuilder.setContentText("正在下载...");
                                                //更新通知栏进度条
                                                mBuilder.setProgress((int) l, (int) l1, false);
                                                Notification notification = mBuilder.build();
                                                notification.flags = Notification.FLAG_AUTO_CANCEL;
                                                //参数1:通知id,参数:通知.
                                                mNotifyManager.notify(10086, notification);
                                            }

                                        }
                                    });

                                }
                            }).create().show();//这一步别忘记了   不然出不来对话框

                    }
                } catch (PackageManager.NameNotFoundException e) {
                    e.printStackTrace();
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
            @Override
            public void onError(Throwable throwable, boolean b) {
            }
            @Override
            public void onCancelled(CancelledException e) {
            }
            @Override
            public void onFinished() {
            }
        });

    }
    //安装下载好的APP
    private void installApk(Context context, File file) {
        Intent intent = new Intent();
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setAction(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
        context.startActivity(intent);
    }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值