package com.ysh.wpc.appupdate; import org.apache.http.Header; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.telephony.TelephonyManager; import android.text.Html; import android.util.Log; import android.widget.Toast; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonSyntaxException; import com.google.gson.reflect.TypeToken; import com.loopj.android.http.TextHttpResponseHandler; import com.ysh.wpc.appupdate.api.AppUpdateAPI; import com.ysh.wpc.appupdate.entity.UpdateBean; import com.ysh.wpc.appupdate.service.DownLoadFileService; import com.ysh.wpc.appupdate.util.StringUtils; import com.ysh.wpc.appupdate.view.CustomDialog; public class AppUpdate { private static String mKey; private static Activity mActivity; private static AppUpdate appUpdate; private boolean isWifi = false; private static boolean isCheck = false; public AppUpdate() { ConnectivityManager connectMgr = (ConnectivityManager) mActivity .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = connectMgr.getActiveNetworkInfo(); if (info != null) { isWifi = info.getType() == ConnectivityManager.TYPE_WIFI ? true : false; } getUpdateInfo(); } /** * 获取更新信息 */ private void getUpdateInfo() { TelephonyManager manager = (TelephonyManager) mActivity .getSystemService(Activity.TELEPHONY_SERVICE); String deviceId=""; if (ContextCompat.checkSelfPermission(mActivity, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(mActivity, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { deviceId = manager.getDeviceId();// 获取deviceId } int versionCode = 1;// 版本号 try { versionCode = mActivity.getPackageManager().getPackageInfo( mActivity.getPackageName(), PackageManager.GET_CONFIGURATIONS).versionCode; } catch (NameNotFoundException e) { e.printStackTrace(); } AppUpdateAPI.getAppUpdateInfo(mActivity, deviceId, "Android", mKey, versionCode + "", new TextHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { if (StringUtils.isEmpty(responseString)) { return; } JSONObject jsonObject = null; try { jsonObject = new JSONObject(responseString); } catch (Exception e) { e.printStackTrace(); } if (Integer.parseInt(jsonObject.optString("code")) == 0) { Gson gson = new GsonBuilder().setPrettyPrinting() .create(); UpdateBean info = null; try { info = gson.fromJson( jsonObject.getJSONObject("data") .toString(), new TypeToken() { }.getType()); } catch (JsonSyntaxException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } if (info.isSilent() && isWifi) { // 自动开始下载 try { Intent intent = new Intent(mActivity, DownLoadFileService.class); mActivity.stopService(intent); } catch (Exception e) { } try { Bundle bundle = new Bundle(); bundle.putString("downloadurl", info.getLink()); Intent intent = new Intent(mActivity, DownLoadFileService.class); intent.putExtras(bundle); mActivity.startService(intent); } catch (Exception e) { } } else { if (!mActivity.isFinishing()) updateDialog(info);// 弹出更新提示框 } } else if (jsonObject.optInt("code") == 1) { if (isCheck) Toast.makeText(mActivity, "当前版本为最新版本", Toast.LENGTH_LONG).show(); } else { if (isCheck) Toast.makeText(mActivity, jsonObject.optString("msg"), Toast.LENGTH_LONG).show(); } } @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { } }); } private void updateDialog(final UpdateBean info) { CustomDialog.Builder builder = new CustomDialog.Builder(mActivity); builder.setTitle("软件更新提示"); builder.setVersion(info.getVersion()); builder.setSize(info.getSize()); builder.setMessage(Html.fromHtml(info.getIntroduction()) + ""); builder.setNoti_WIFI(isWifi); builder.setPositiveButton("立即升级", new OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // 下载 try { Intent intent = new Intent(mActivity, DownLoadFileService.class); mActivity.stopService(intent); } catch (Exception e) { } try { Bundle bundle = new Bundle(); bundle.putString("downloadurl", info.getLink()); Intent intent = new Intent(mActivity .getApplicationContext(), DownLoadFileService.class); intent.putExtras(bundle); mActivity.startService(intent); } catch (Exception e) { } arg0.dismiss(); } }); builder.setNegativeButton("暂不升级", new OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { if (info.isForce()) { mActivity.finish(); } arg0.dismiss(); } }); builder.create().show(); } /** * 获取key * * @param key */ public static void setAppUpdateKey(String key) { if (key != null && key.length() > 0) { mKey = key; } } /** * 获取activity * * @param activity */ public static void setAppUpdateActivity(Activity activity, boolean check) { if (activity != null) { mActivity = activity; isCheck = check; } } /** * 初始化 */ public static void initAppUpdate() { if (appUpdate == null) { appUpdate = new AppUpdate(); } } /** * 销毁appUpdate */ public static void destoryAppUpdate() { if (appUpdate != null) { appUpdate = null; } } }