Android版本更新

首先下载apk,自己写个json串放到服务器里面

以下json串为例:
{“versionCode”:2,”des”:”新版本,更炫,更酷!”,”url”:”http://169.254.68.173:8080/demo.apk“}

/**
     * 版本更新
     */
    private void update() {
        // 1.获得最新版本
        HttpUtils httpUtils = new HttpUtils(5000);
        httpUtils.send(HttpRequest.HttpMethod.GET, "http://169.254.68.173:8080/json.json", new RequestCallBack<String>() {

            @Override
            public void onFailure(HttpException arg0, String arg1) {
                Toast.makeText(TextActivity.this, "服务器异常", Toast.LENGTH_SHORT).show();
                redirect();
            }

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                //获取最新版本号
                String json = arg0.result;
                try {
                    JSONObject jsonObject = new JSONObject(json);
                    int newCode = jsonObject.getInt("versionCode");
                    url = jsonObject.getString("url");
                    System.out.println(url);

                    //2.获得当前版本号
                    int currentCode = getCurrentCode();

                    if(currentCode<newCode){
                        //3.弹窗
                        AlertDialog.Builder builder = new AlertDialog.Builder(TextActivity.this);
                        builder.setTitle("版本更新");
                        builder.setMessage(jsonObject.getString("des"));
                        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                //取消更新
                                dialog.dismiss();

                                redirect();
                            }
                        });
                        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                //4.下载apk
                                install();
                            }
                        });

                        builder.show();

                    }else{
                        Toast.makeText(TextActivity.this, "已经是最新版本", Toast.LENGTH_SHORT).show();
                    }


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




            }
        });

    }

    /**
     * 获取版本号
     */
    public int getCurrentCode(){
        PackageManager packageManager = getPackageManager();
        try {
            PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
            return packageInfo.versionCode;

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

        return -1;
    }
    /**
     * 跳转
     */
    public void redirect(){

        new Thread(){
            public void run() {
                SystemClock.sleep(2000);

                Intent intent = new Intent(TextActivity.this, MainActivity.class);
                startActivity(intent);
                finish();//跳转
            };
        }.start();

    }
    /**
     * 下载apk
     */
    public void install(){
        HttpUtils httpUtils = new HttpUtils(5000);
        httpUtils.download(url, "/mnt/sdcard/demo.apk", new RequestCallBack<File>() {


            @Override
            public void onFailure(HttpException arg0, String arg1) {
                Toast.makeText(TextActivity.this, "下载失败", Toast.LENGTH_SHORT).show();
                System.out.println(url);
                redirect();
            }

            @Override
            public void onSuccess(ResponseInfo<File> arg0) {
                // 跳转到系统安装页面
                Intent intent = new Intent();
                intent.setAction("android.intent.action.VIEW");
                intent.addCategory("android.intent.category.DEFAULT");
                intent.setDataAndType(Uri.fromFile(arg0.result),
                        "application/vnd.android.package-archive");
                startActivityForResult(intent, 0);// 如果用户取消安装的话,
                // 会返回结果,回调方法onActivityResult
            }

        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        redirect();

    }

运行时要启动服务器 Tomcat bin start.up

内容概要:本文全面解析了数智化毕业设计项目开发与写作技巧,涵盖关键概念、核心技巧、应用场景、代码案例分析及未来发展趋势。首先定义了数智化毕业设计项目,强调数据赋能性、智能交互性和场景适配性,并指出数智化写作技巧的重要性。接着介绍了项目开发的“需求锚定 - 技术匹配 - 迭代优化”三步法,以及写作的“问题导向 - 方案论证 - 成果验证”结构。文章列举了教育、医疗、工业等领域的应用场景,如智能学习推荐系统、疾病风险预测模型等。最后通过“基于用户行为数据的智能商品推荐系统”的代码案例,详细展示了数据预处理、协同过滤模型构建及模型评估过程。展望未来,数智化毕业设计将呈现轻量化开发、跨学科融合和落地性强化的趋势。 适合人群:高等院校即将进行毕业设计的学生,特别是对数智化技术感兴趣的理工科学生。 使用场景及目标:①帮助学生理解数智化毕业设计的关键概念和技术实现路径;②指导学生掌握项目开发和写作的具体技巧;③提供实际应用场景和代码案例,增强学生的实践能力;④引导学生关注数智化技术的未来发展趋势。 阅读建议:本文内容丰富,建议读者先通读全文,把握整体框架,再深入研读感兴趣的部分。对于代码案例部分,建议结合实际操作进行学习,加深理解。同时,关注文中提到的未来发展趋势,为自己的毕业设计选题提供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值