VersionUpgradeFragment.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. package com.uas.esop.fragment;
  2. import android.content.Intent;
  3. import android.net.Uri;
  4. import android.os.Build;
  5. import android.os.Handler;
  6. import android.os.Message;
  7. import android.support.v4.content.FileProvider;
  8. import android.text.TextUtils;
  9. import android.view.KeyEvent;
  10. import android.view.View;
  11. import android.widget.Button;
  12. import android.widget.TextView;
  13. import com.alibaba.fastjson.JSON;
  14. import com.alibaba.fastjson.JSONObject;
  15. import com.android.volley.Request;
  16. import com.android.volley.toolbox.StringRequest;
  17. import com.uas.esop.R;
  18. import com.uas.esop.global.GloableParams;
  19. import com.uas.esop.util.AndroidUtil;
  20. import com.uas.esop.util.CommonUtil;
  21. import com.uas.esop.util.Constants;
  22. import com.uas.esop.util.FastjsonUtil;
  23. import com.uas.esop.util.FileUtils;
  24. import com.uas.esop.util.HttpCallback;
  25. import com.uas.esop.util.HttpParams;
  26. import com.uas.esop.util.VollyRequest;
  27. import com.uas.esop.util.down.CommonProgressPop;
  28. import com.uas.esop.util.down.ProgressDownloader;
  29. import com.uas.esop.util.down.ProgressResponseBody;
  30. import java.io.File;
  31. import java.io.IOException;
  32. import static com.uas.esop.util.Constants.CONSTANT.APK_FILE_NAME;
  33. import static com.uas.esop.util.Constants.CONSTANT.APK_FILE_PATH;
  34. /**
  35. * Created by RaoMeng on 2020/4/9
  36. * Desc: 版本升级页面
  37. */
  38. public class VersionUpgradeFragment extends BaseFragment implements ProgressResponseBody.ProgressListener {
  39. private TextView mOldVersionTv, mNewVersionTv, mMsgTextView;
  40. private Button mUpgradeButton;
  41. private CommonProgressPop mProgressPop;
  42. private ProgressDownloader mDownloader;
  43. private long breakPoints, contentLength, totalBytes;
  44. private File file;
  45. private String mAttachId;
  46. private StringRequest mStringRequest;
  47. @Override
  48. protected int getLayout() {
  49. return R.layout.fragment_version_upgrade;
  50. }
  51. @Override
  52. protected void initViews() {
  53. setTitle("版本升级");
  54. mOldVersionTv = root.findViewById(R.id.version_upgrade_oldVersion_tv);
  55. mNewVersionTv = root.findViewById(R.id.version_upgrade_newVersion_tv);
  56. mMsgTextView = root.findViewById(R.id.version_upgrade_msg_tv);
  57. mUpgradeButton = root.findViewById(R.id.version_upgrade_upgrade_btn);
  58. }
  59. @Override
  60. protected void initEvents() {
  61. mUpgradeButton.setOnClickListener(new View.OnClickListener() {
  62. @Override
  63. public void onClick(View v) {
  64. if (mProgressPop == null) {
  65. mProgressPop = new CommonProgressPop(mActivity, "正在下载新版本");
  66. }
  67. mProgressPop.showPopupWindow();
  68. breakPoints = 0L;
  69. File directory = new File(APK_FILE_PATH);
  70. if (!directory.exists() && !directory.isDirectory()) {
  71. boolean mkdirs = directory.mkdirs();
  72. } else {
  73. FileUtils.delAllFile(APK_FILE_PATH);
  74. }
  75. file = new File(APK_FILE_PATH, APK_FILE_NAME);
  76. try {
  77. file.createNewFile();
  78. } catch (IOException e) {
  79. e.printStackTrace();
  80. }
  81. String downloadUrl = GloableParams.ADDRESS_COMMON_DOWNLOADBYID + "?id=" + mAttachId;
  82. mDownloader = new ProgressDownloader(downloadUrl, file, VersionUpgradeFragment.this);
  83. mDownloader.download(0L);
  84. }
  85. });
  86. }
  87. @Override
  88. protected void initDatas() {
  89. mOldVersionTv.setText(AndroidUtil.getVersionName(mActivity));
  90. getNewVersionMsg();
  91. }
  92. private void getNewVersionMsg() {
  93. progressDialog.show();
  94. // VolleyRequest.getInstance().stringRequest(new HttpParams.Builder()
  95. // .url(GloableParams.ADDRESS_OUTMATERIAL_GETPDAVERSION)
  96. // .method(Request.Method.GET)
  97. // .addParam("code", "UAS_SMART")
  98. // .build(), new HttpCallback() {
  99. // @Override
  100. // public void onSuccess(int flag, Object o) throws Exception {
  101. // progressDialog.dismiss();
  102. // String result = o.toString();
  103. // JSONObject resultObject = JSON.parseObject(result);
  104. // JSONObject dataObject = resultObject.getJSONObject("data");
  105. // if (dataObject != null) {
  106. // mNewVersionTv.setText(FastjsonUtil.getText(dataObject, "pp_versionname"));
  107. // mMsgTextView.setText(FastjsonUtil.getText(dataObject, "pp_remark"));
  108. //
  109. // mAttachId = FastjsonUtil.getText(dataObject, "pp_attach");
  110. // if (!TextUtils.isEmpty(mAttachId)) {
  111. // mUpgradeButton.setVisibility(View.VISIBLE);
  112. // } else {
  113. // mUpgradeButton.setVisibility(View.VISIBLE);
  114. // }
  115. // }
  116. // }
  117. //
  118. // @Override
  119. // public void onFail(int flag, String failStr) throws Exception {
  120. // progressDialog.dismiss();
  121. // CommonUtil.toastNoRepeat(mActivity, failStr);
  122. // }
  123. // });
  124. VollyRequest.getInstance().stringRequest(mStringRequest,
  125. new HttpParams.Builder()
  126. .url(GloableParams.ADDRESS_OUTMATERIAL_GETPDAVERSION)
  127. // .url("http://usoft.f3322.net:11769/ERP/api/pda/outMaterial/getPdaVersion.action")
  128. .method(Request.Method.GET)
  129. .addParam("code", "UAS_SMART")
  130. .build(), new HttpCallback() {
  131. @Override
  132. public void onSuccess(int flag, Object o) throws Exception {
  133. progressDialog.dismiss();
  134. String result = o.toString();
  135. JSONObject resultObject = JSON.parseObject(result);
  136. JSONObject dataObject = resultObject.getJSONObject("data");
  137. if (dataObject != null) {
  138. mNewVersionTv.setText(FastjsonUtil.getText(dataObject, "pp_versionname"));
  139. mMsgTextView.setText(FastjsonUtil.getText(dataObject, "pp_remark"));
  140. mAttachId = FastjsonUtil.getText(dataObject, "pp_attach");
  141. if (!TextUtils.isEmpty(mAttachId)) {
  142. mUpgradeButton.setVisibility(View.VISIBLE);
  143. } else {
  144. mUpgradeButton.setVisibility(View.VISIBLE);
  145. }
  146. }
  147. }
  148. @Override
  149. public void onFail(int flag, String failStr) throws Exception {
  150. progressDialog.dismiss();
  151. CommonUtil.toastNoRepeat(mActivity, failStr);
  152. }
  153. });
  154. }
  155. @Override
  156. public void onPreExecute(long contentLength) {
  157. // 文件总长只需记录一次,要注意断点续传后的contentLength只是剩余部分的长度
  158. if (this.contentLength == 0L) {
  159. this.contentLength = contentLength;
  160. if (mProgressPop != null) {
  161. mProgressPop.setProgressMax((int) (contentLength / 1024));
  162. }
  163. }
  164. }
  165. @Override
  166. public void update(long totalBytes, boolean done) {
  167. // 注意加上断点的长度
  168. this.totalBytes = totalBytes + breakPoints;
  169. int progress = (int) (totalBytes + breakPoints) / 1024;
  170. Message message = Message.obtain();
  171. message.what = Constants.CONSTANT.DOWNLOAD_PROGRESS;
  172. message.obj = progress;
  173. mHandler.sendMessage(message);
  174. if (done) {
  175. mHandler.sendEmptyMessage(Constants.CONSTANT.DOWNLOAD_SUCCESS);
  176. }
  177. }
  178. private Handler mHandler = new Handler() {
  179. @Override
  180. public void handleMessage(Message msg) {
  181. switch (msg.what) {
  182. case Constants.CONSTANT.DOWNLOAD_PROGRESS:
  183. try {
  184. int progress = (int) msg.obj;
  185. mProgressPop.setProgress(progress);
  186. // long remain = 100 - (((progress * 1024 * 100) / contentLength));
  187. // if (remain < 0) {
  188. // remain = 0;
  189. // }
  190. } catch (Exception e) {
  191. }
  192. break;
  193. case Constants.CONSTANT.DOWNLOAD_SUCCESS:
  194. CommonUtil.toastNoRepeat(mActivity, "下载完成");
  195. mProgressPop.dismiss();
  196. try {
  197. File apk = new File(APK_FILE_PATH, APK_FILE_NAME);
  198. Intent intent = new Intent(Intent.ACTION_VIEW);
  199. if (Build.VERSION.SDK_INT >= 24) {
  200. Uri apkUri = FileProvider.getUriForFile(mActivity,
  201. "com.uas.esop.fileprovider", apk);
  202. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  203. intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
  204. intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
  205. } else {
  206. intent.setDataAndType(Uri.fromFile(apk), "application/vnd.android.package-archive");
  207. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  208. }
  209. mActivity.startActivity(intent);
  210. } catch (Exception e) {
  211. e.printStackTrace();
  212. }
  213. break;
  214. case Constants.CONSTANT.DOWNLOAD_FAILED:
  215. mProgressPop.dismiss();
  216. CommonUtil.makeNotice();
  217. CommonUtil.toastNoRepeat(mActivity, "下载失败");
  218. break;
  219. default:
  220. break;
  221. }
  222. }
  223. };
  224. @Override
  225. public boolean onKeyDown(int keyCode, KeyEvent event) {
  226. return false;
  227. }
  228. @Override
  229. public boolean onFragmentBackPressed() {
  230. return false;
  231. }
  232. }