haijiang
2018-09-19 82cc6c94fdc08b1814fbf7195e88cf335eed3e8d
app/src/main/java/com/moral/yunfushao/update/UpdateManager.java
@@ -20,18 +20,34 @@
import android.view.View;
import android.widget.ProgressBar;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.cache.CacheMode;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.request.BaseRequest;
import com.moral.andbrickslib.utils.log.XLog;
import com.moral.yunfushao.MainActivity;
import com.moral.yunfushao.R;
import com.moral.yunfushao.common.API;
import com.moral.yunfushao.httputils.HttpCallBack;
import com.moral.yunfushao.httputils.HttpUtils;
import com.moral.yunfushao.utils.T;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import okhttp3.Call;
import okhttp3.Response;
public class UpdateManager {
    /* 下载中 */
@@ -83,6 +99,33 @@
        ParseXmlService service = new ParseXmlService();
        try {
            mHashMap = service.parseXml(API.URL_HTTP + "/upgrade");
            if (isUpdate()) {
                if (Build.VERSION.SDK_INT >= 23) {
                    mActivity.updateAPP();
                } else {
                    // 显示提示对话框
                    showNoticeDialog();
                }
            } else {
//                Log.d("haijiang","已经是最新版本");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 检测软件更新
     */
    public void checkUpdateJson() {
        String data = getUrlData(API.UPDATE);
        try {
            JSONObject resJosn = new JSONObject(data);
            mHashMap = new HashMap<>();
            mHashMap.put("version", resJosn.optString("version"));
            mHashMap.put("name", resJosn.optString("name"));
            mHashMap.put("message", "");
            mHashMap.put("url", resJosn.optString("url"));
            if (isUpdate()) {
                if (Build.VERSION.SDK_INT >= 23) {
                    mActivity.updateAPP();
@@ -172,8 +215,7 @@
    /**
     * 显示软件下载对话框
     */
    private void showDownloadDialog()
    {
    private void showDownloadDialog() {
        // 构造软件下载对话框
        Builder builder = new Builder(mActivity);
        builder.setTitle(R.string.soft_updating);
@@ -183,11 +225,9 @@
        mProgress = (ProgressBar) v.findViewById(R.id.update_progress);
        builder.setView(v);
        // 取消更新
        builder.setNegativeButton(R.string.soft_update_cancel, new OnClickListener()
        {
        builder.setNegativeButton(R.string.soft_update_cancel, new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                // 设置取消状态
                cancelUpdate = true;
@@ -202,8 +242,7 @@
    /**
     * 下载apk文件
     */
    private void downloadApk()
    {
    private void downloadApk() {
        // 启动新线程下载软件
        new downloadApkThread().start();
    }
@@ -273,7 +312,9 @@
            // 取消下载对话框显示
            mDownloadDialog.dismiss();
        }
    };
    }
    ;
    /**
     * 安装APK文件
@@ -288,4 +329,32 @@
        i.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");
        mActivity.startActivity(i);
    }
    public static String getUrlData(String path) {
        BufferedReader br = null;
        StringBuffer sb = new StringBuffer();
        HttpURLConnection connection = null;
        try {
            URL url = new URL(path);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(8000);
            connection.setReadTimeout(8000);
            br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String s = null;
            while ((s = br.readLine()) != null) {
                sb.append(s);
            }
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
        }
        return sb.toString();
    }
}