| | |
| | | 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 { |
| | | /* 下载中 */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 检测软件更新 |
| | | */ |
| | | 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(); |
| | | } else { |
| | | // 显示提示对话框 |
| | | showNoticeDialog(); |
| | | } |
| | | } else { |
| | | // Log.d("haijiang","已经是最新版本"); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 检查软件是否有更新版本 |
| | | * |
| | | * @return |
| | |
| | | // 构造对话框 |
| | | Builder builder = new Builder(mActivity); |
| | | builder.setTitle(R.string.soft_update_title); |
| | | if(message == null || message.isEmpty()) { |
| | | if (message == null || message.isEmpty()) { |
| | | builder.setMessage(R.string.soft_update_info); |
| | | } else { |
| | | builder.setMessage(message); |
| | |
| | | /** |
| | | * 显示软件下载对话框 |
| | | */ |
| | | private void showDownloadDialog() |
| | | { |
| | | private void showDownloadDialog() { |
| | | // 构造软件下载对话框 |
| | | Builder builder = new Builder(mActivity); |
| | | builder.setTitle(R.string.soft_updating); |
| | |
| | | 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; |
| | |
| | | /** |
| | | * 下载apk文件 |
| | | */ |
| | | private void downloadApk() |
| | | { |
| | | private void downloadApk() { |
| | | // 启动新线程下载软件 |
| | | new downloadApkThread().start(); |
| | | } |
| | |
| | | * 下载文件线程 |
| | | * |
| | | * @author coolszy |
| | | *@date 2012-4-26 |
| | | *@blog http://blog.92coding.com |
| | | * @date 2012-4-26 |
| | | * @blog http://blog.92coding.com |
| | | */ |
| | | private class downloadApkThread extends Thread { |
| | | @Override |
| | |
| | | try { |
| | | // 判断SD卡是否存在,并且是否具有读写权限 |
| | | //if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { |
| | | // 获得存储卡的路径 |
| | | //String sdpath = Environment.getExternalStorageDirectory() + "/"; |
| | | //mSavePath = sdpath + "download"; |
| | | // 获得存储卡的路径 |
| | | //String sdpath = Environment.getExternalStorageDirectory() + "/"; |
| | | //mSavePath = sdpath + "download"; |
| | | |
| | | mSavePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/"; |
| | | mSavePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/"; |
| | | |
| | | URL url = new URL(mHashMap.get("url")); |
| | | // 创建连接 |
| | | HttpURLConnection conn = (HttpURLConnection) url.openConnection(); |
| | | conn.connect(); |
| | | // 获取文件大小 |
| | | int length = conn.getContentLength(); |
| | | // 创建输入流 |
| | | InputStream is = conn.getInputStream(); |
| | | URL url = new URL(mHashMap.get("url")); |
| | | // 创建连接 |
| | | HttpURLConnection conn = (HttpURLConnection) url.openConnection(); |
| | | conn.connect(); |
| | | // 获取文件大小 |
| | | int length = conn.getContentLength(); |
| | | // 创建输入流 |
| | | InputStream is = conn.getInputStream(); |
| | | |
| | | File file = new File(mSavePath); |
| | | // 判断文件目录是否存在 |
| | | if (!file.exists()) { |
| | | file.mkdir(); |
| | | File file = new File(mSavePath); |
| | | // 判断文件目录是否存在 |
| | | if (!file.exists()) { |
| | | file.mkdir(); |
| | | } |
| | | File apkFile = new File(mSavePath, mHashMap.get("name")); |
| | | FileOutputStream fos = new FileOutputStream(apkFile); |
| | | int count = 0; |
| | | // 缓存 |
| | | byte buf[] = new byte[1024]; |
| | | // 写入到文件中 |
| | | do { |
| | | int numread = is.read(buf); |
| | | count += numread; |
| | | // 计算进度条位置 |
| | | progress = (int) (((float) count / length) * 100); |
| | | // 更新进度 |
| | | mHandler.sendEmptyMessage(DOWNLOAD); |
| | | if (numread <= 0) { |
| | | // 下载完成 |
| | | mHandler.sendEmptyMessage(DOWNLOAD_FINISH); |
| | | break; |
| | | } |
| | | File apkFile = new File(mSavePath, mHashMap.get("name")); |
| | | FileOutputStream fos = new FileOutputStream(apkFile); |
| | | int count = 0; |
| | | // 缓存 |
| | | byte buf[] = new byte[1024]; |
| | | // 写入到文件中 |
| | | do { |
| | | int numread = is.read(buf); |
| | | count += numread; |
| | | // 计算进度条位置 |
| | | progress = (int) (((float) count / length) * 100); |
| | | // 更新进度 |
| | | mHandler.sendEmptyMessage(DOWNLOAD); |
| | | if (numread <= 0) { |
| | | // 下载完成 |
| | | mHandler.sendEmptyMessage(DOWNLOAD_FINISH); |
| | | break; |
| | | } |
| | | // 写入文件 |
| | | fos.write(buf, 0, numread); |
| | | } while (!cancelUpdate);// 点击取消就停止下载. |
| | | fos.close(); |
| | | is.close(); |
| | | // 写入文件 |
| | | fos.write(buf, 0, numread); |
| | | } while (!cancelUpdate);// 点击取消就停止下载. |
| | | fos.close(); |
| | | is.close(); |
| | | //} |
| | | } catch (MalformedURLException e) { |
| | | e.printStackTrace(); |
| | |
| | | // 取消下载对话框显示 |
| | | mDownloadDialog.dismiss(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | ; |
| | | |
| | | /** |
| | | * 安装APK文件 |
| | |
| | | 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(); |
| | | } |
| | | |
| | | |
| | | } |