Android版本更新

Android版本更新、发现新版本后进行更新安装。
关于我

MainActivity.java
使用Update工具类,app_down_id是后台对应项目的更新序号(按照自己项目是否需要这个进行选择)

protected void onResume() {
		super.onResume();
        Update.CheckUpdate(this, getResources().getString(R.string.app_down_id), true);
	}

Update.java

private static UpdateApplicationDialog updateApplicationDialog;//自定义的更新弹框

//IsInstall:app是否安装过(一般都为true,除非新用户)
public static void CheckUpdate(final Context mContext, String app_update_id, final boolean IsInstall) {
	updateApplicationDialog = new UpdateApplicationDialog(mContext);//初始化更新弹框
	TreeMap<String, String> map = new TreeMap<String, String>();
    map.put("app_id", app_update_id);//请求参数
     RequestParams params = getGLKTRequestParams(“http:/123456/改为自己的更新地址url", map);
        x.http().post(params, new Callback.CommonCallback<String>() {
			 public void onSuccess(String r) {
				try {
                    String result=getResponseDataBean(r);//解析Json
                    UpdateInfoBean updateInfoBean = new Gson().fromJson(result, UpdateInfoBean.class);
                    
					int currentVersion = CommonUtil.getCurrentVersion(mContext);//获取当前版本
					 if (!TextUtils.isEmpty(updateInfoBean.data.versions) && Float.valueOf(updateInfoBean.data.versions) > currentVersion) {//前后两个版本进行对比
					 if (IsInstall) {
						 if (Float.valueOf(updateInfoBean.data.versions) > Float.valueOf(CommonUtil.getCurrentVersion(mContext))) {
						 	updateApplicationDialog.setDownloadInfo(updateInfoBean.data.apk_url,"", updateInfoBean.data.name, updateInfoBean.data.ver_desc,null,0);
						 	if (updateApplicationDialog != null && !updateApplicationDialog.isShowing()) {
                                    updateApplicationDialog.initReset();
                                    updateApplicationDialog.show();
                                }
                            }
					}
			}catch (Exception e) {
                    e.printStackTrace();
                }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
            	ex.printStackTrace();
            }

            @Override
            public void onCancelled(CancelledException cex) {
            	cex.printStackTrace();
            }

            @Override
            public void onFinished() {
            }
		}
	});
}

剩下的就是工具方法了。

public static RequestParams getGLKTRequestParams(String url, TreeMap<String, String> treeMap ) {
        RequestParams requestParams = new RequestParams(url);
        requestParams.setCancelFast(true);
        requestParams.setAsJsonContent(true);
        if (treeMap != null) {
            JsonObject originalRequestParams=new JsonObject();      //原始请求参数
            for (TreeMap.Entry<String, String> entry : treeMap.entrySet()) {
                if (entry.getValue() != null && !entry.getValue().equals("")) {
                    originalRequestParams.addProperty(entry.getKey(),entry.getValue());
                }
            }
            JsonObject requestParamsObject=new JsonObject();
            requestParamsObject.addProperty("data", Base64.encodeToString(originalRequestParams.toString().getBytes(), Base64.NO_WRAP));
            requestParamsObject.addProperty("sign",md5(getParametersAnds(treeMap)+KEY_GLKT ));
            requestParams.setBodyContent(requestParamsObject.toString());
        } else {

        }
        return requestParams;
    }
    public static String getParametersAnds(TreeMap<String, String> treeMap) {
        StringBuilder sb = new StringBuilder();
        WeakReference<StringBuilder> wrSB = new WeakReference<StringBuilder>(sb);
        for (TreeMap.Entry<String, String> entry : treeMap.entrySet()) {
            if (entry.getValue() != null && !entry.getValue().equals("")) {
                if (wrSB.get().toString().equals("")){
                    wrSB.get().append(entry.getValue());
                }else {
                    wrSB.get().append(","+entry.getValue());
                }

            }
            //  LogTool.e("res", "key:" + entry.getKey() + "value:" + entry.getValue());
        }
        return wrSB.get().toString();
    }
    /**
     * 获取响应dataString
     * @param result
     * @return
     */
    public static String getResponseDataBean(String result){
        return  new String(Base64.decode(gsonToBean(result,RDataBean.class).data, Base64.NO_WRAP));
    }

public class RDataBean {
        public String data;
        public String sign;
    }
``/**
     * MD5加密
     *
     * @param paramString
     * @return
     */
    private static String md5(String paramString) {
        String returnStr;
        try {
            MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
            localMessageDigest.update(paramString.getBytes());
            returnStr = byteToHexString(localMessageDigest.digest());
            return returnStr;
        } catch (Exception e) {
            return paramString;
        }
    }

    /**
     * 将指定byte数组转换成16进制字符串
     *
     * @param b
     * @return
     */
    private static String byteToHexString(byte[] b) {
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < b.length; i++) {
            String hex = Integer.toHexString(b[i] & 0xFF);
            if (hex.length() == 1) {
                hex = '0' + hex;
            }
            hexString.append(hex.toLowerCase());
        }
        return hexString.toString();
    }

UpdateApplicationDialog.java(自定义弹框类)

在里面实现这接口(RedirectHandler是解决重定向问题)就可以了
Callback.ProgressCallback<File>, RedirectHandler

欢迎加入qq群:1093481319


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值