吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7134|回复: 11
收起左侧

[其他原创] 【原创源码】安卓APP自动检查更新模块

[复制链接]
qtfreet00 发表于 2016-1-6 14:58
本帖最后由 世事繁华皆成空 于 2016-1-6 16:13 编辑

QQ截图20160106145128.png

采用Material Dialog设计,样式还是很美观的,为了不影响使用,在点击下载后自动在通知栏进行下载,下载完成后由用户手动去点击通知栏进行安装

QQ截图20160106145236.png

QQ截图20160106145306.png

云端配置

QQ截图20160106145340.png

关键代码:

[Java] 纯文本查看 复制代码
        CheckUpdate checkUpdate = new CheckUpdate(this); //实例化自动更新类
        checkUpdate.startCheck();


[Java] 纯文本查看 复制代码
  public void startCheck() {
        new Thread(new Runnable() {
            @Override
            public void run() {
               //4.0+网络请求需要在子线程中完成
                URL url;
                InputStream is;
                HttpURLConnection conn = null;
                try {
                    url = new URL(Constant.APK_URL); 
                    conn = (HttpURLConnection) url.openConnection();
                    conn.setConnectTimeout(5000);
                    conn.setRequestMethod("GET");
                    is = conn.getInputStream();  //网络请求
                    BufferedReader br = new BufferedReader(new InputStreamReader(is));
                    StringBuilder sb = new StringBuilder();
                    String line;
                    while ((line = br.readLine()) != null) {
                        sb.append(line);
                    }
                    LogUtils.e(sb);
                    br.close();
                    is.close();
                    Message msg = new Message();
                    msg.what = 0;
                    msg.obj = sb.toString();
                    mhandler.sendMessage(msg);           //将获取到的数据直接发消息给hanlder去处理


                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if (conn != null) {
                        conn.disconnect();
                    }
                }
            }
        }).start();
    }


hanlder中直接对数据进行解析

[Java] 纯文本查看 复制代码
     switch (msg.what) {
                case 0:
                    try {
                        JSONObject js = new JSONObject(msg.obj.toString());
                        int version = js.getInt("version");
                        String intro = js.getString("introduction");
                        String url = js.getString("url");
                        compareVersion(version, intro, url);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


获取当前APK版本号,这里使用的是versioncode,个人觉得比较方便,当云端版本大于当前版本时,则提示更新

[Java] 纯文本查看 复制代码
private void compareVersion(int newVersion, String intro, final String url) {
        int versionCode = getVerCode(mcontext);
        LogUtils.e(versionCode);
        LogUtils.e(intro);
        LogUtils.e(url);
        if (newVersion > versionCode) {
            new MaterialDialog.Builder(mcontext)
                    .title("发现更新")
                    .content(intro)
                    .positiveText("立即更新")
                    .negativeText("退出").onPositive(new MaterialDialog.SingleButtonCallback() {
                @Override
                public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                    Intent intent = new Intent(mcontext, DownloadService.class);
                    intent.putExtra("url", url);
                    mcontext.startService(intent);


                }
            })
                    .show();

        } else {
            return;
        }


    }


    private int getVerCode(Context ctx) {
        int currentVersionCode = 0;

        PackageManager manager = ctx.getPackageManager();
        try {
            PackageInfo info = manager.getPackageInfo(ctx.getPackageName(), 0);
            currentVersionCode = info.versionCode; // 版本号
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return currentVersionCode;
    }


Demo源码:
https://github.com/Qrilee/AutoCheckUpdate欢迎star

免费评分

参与人数 5热心值 +5 收起 理由
luoky7 + 1 我很赞同!
conway + 1 我很赞同!
铁头张 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
Cizel + 1 花花出品
逍遥一仙 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

铁头张 发表于 2016-1-12 18:04
做的不错。。。还有通知栏更新提示


要是能打开软件,提示更新,并且自动更新完成就好了。。。

不怎么会Android编程。。。学着写中。。。
头像被屏蔽
帅的谁爱 发表于 2016-1-6 20:49
左望丶 发表于 2016-1-6 15:04
520_ai_in@sina. 发表于 2016-1-6 15:21
话说楼主是女人吗
cxqdly 发表于 2016-1-6 15:33
系统更新还是APP更新
manbajie 发表于 2016-1-7 10:50
嗯,好东西的说
飞丶宇 发表于 2016-1-9 15:59
哈哈,不错不错,比我的更新后台略差一些。。。
wld 发表于 2016-1-18 09:56
好东西,就是现在用不上
Witheredead 发表于 2016-1-22 18:43 来自手机
支持,支持
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-6-17 11:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表