EfunboxUtil.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. package com.edufound.reader.util;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.text.TextUtils;
  6. import android.util.DisplayMetrics;
  7. import android.view.View;
  8. import com.edufound.reader.activity.LoginAlertActivity;
  9. import com.edufound.reader.activity.LoginQRAlertActivity;
  10. import com.edufound.reader.activity.PayActivity;
  11. import com.edufound.reader.activity.TmailPayActivity;
  12. import com.edufound.reader.activity.WebActivity;
  13. import com.edufound.reader.apiserver.ActivityEventServerImpl;
  14. import com.edufound.reader.apiserver.OrderApiServerImpl;
  15. import com.edufound.reader.bean.ChannelCodeEnum;
  16. import com.edufound.reader.bean.EventListBean;
  17. import com.edufound.reader.bean.HttpResultBean;
  18. import com.edufound.reader.botsdk.BotRegisterListener;
  19. import com.edufound.reader.interfaces.EfunboxInterfaces;
  20. import com.edufound.reader.miutil.MiSoundSDKUtil;
  21. import com.edufound.reader.popwindow.PopWindowUtil;
  22. import com.edufound.reader.presenter.PopWindowPresneter;
  23. import com.edufound.reader.receiver.ShowPageLoadingReceiver;
  24. import com.edufound.reader.tmailsdk.TMailSDKUtil;
  25. import com.google.gson.Gson;
  26. import com.google.gson.reflect.TypeToken;
  27. import com.okhttplib.HttpInfo;
  28. import com.okhttplib.callback.Callback;
  29. import com.orhanobut.logger.Logger;
  30. import java.io.IOException;
  31. import java.text.DecimalFormat;
  32. import java.util.HashMap;
  33. import java.util.List;
  34. import java.util.Map;
  35. public class EfunboxUtil {
  36. /**
  37. * 得到宽高缩放比
  38. */
  39. public static void initDesignSize(Context context) {
  40. final DisplayMetrics appDisplayMetrics = context.getResources().getDisplayMetrics();
  41. int designWidth = 1280;
  42. int designHeight = 720;
  43. float ds = 1.0f * designWidth / designHeight;
  44. float ts = 1.0f * appDisplayMetrics.widthPixels / appDisplayMetrics.heightPixels;
  45. if (ds >= ts) {
  46. int targetWidth = appDisplayMetrics.widthPixels;
  47. float designScale = 1.0f * targetWidth / designWidth;
  48. setDisplay(context, designScale);
  49. } else {
  50. int targetHeight = appDisplayMetrics.heightPixels;
  51. float designScale = 1.0f * targetHeight / designHeight;
  52. setDisplay(context, designScale);
  53. }
  54. }
  55. /**
  56. * 设置dpi缩放比
  57. */
  58. public static void setDisplay(Context context, float designScale) {
  59. DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
  60. displayMetrics.density = designScale;
  61. displayMetrics.scaledDensity = displayMetrics.density;
  62. displayMetrics.xdpi = displayMetrics.density * 160;
  63. displayMetrics.ydpi = displayMetrics.xdpi;
  64. displayMetrics.densityDpi = Float.valueOf(displayMetrics.xdpi).intValue();
  65. }
  66. /**
  67. * 判断字符串是否符合手机号码格式
  68. * 移动号段: 134,135,136,137,138,139,147,150,151,152,157,158,159,170,178,182,183,184,187,188
  69. * 联通号段: 130,131,132,145,155,156,170,171,175,176,185,186
  70. * 电信号段: 133,149,153,170,173,177,180,181,189
  71. *
  72. * @param mobileNums
  73. * @return 待检测的字符串
  74. */
  75. public static boolean isMobileNO(String mobileNums) {
  76. String telRegex = "^((13[0-9])|(15[^4])|(18[0-9])|(17[0-8])|(147,145))\\d{8}$";
  77. if (TextUtils.isEmpty(mobileNums)) {
  78. return false;
  79. } else {
  80. return mobileNums.matches(telRegex);
  81. }
  82. }
  83. /**
  84. * 根据中文年纪选择换成后台枚举
  85. */
  86. public static String getEnumByCNGrade(String cnGrade) {
  87. // PRESCHOOL("学前"),
  88. // PRIMARY_FIRST_GRADE("小学一年级"),
  89. // PRIMARY_SECOND_GRADE("小学二年级"),
  90. // PRIMARY_THREE_GRADE("小学三年级"),
  91. // PRIMARY_SENIOR_GRADE("小学四年级");
  92. switch (cnGrade) {
  93. case "一年级":
  94. return "PRIMARY_FIRST_GRADE";
  95. case "二年级":
  96. return "PRIMARY_SECOND_GRADE";
  97. case "三年级":
  98. return "PRIMARY_THREE_GRADE";
  99. case "四年级":
  100. return "PRIMARY_SENIOR_GRADE";
  101. case "学前":
  102. return "PRESCHOOL";
  103. }
  104. return "undefinde";
  105. }
  106. public static String getCNGradeByEnum(String gradeEnum) {
  107. switch (gradeEnum) {
  108. case "PRIMARY_FIRST_GRADE":
  109. return "一年级";
  110. case "PRIMARY_SECOND_GRADE":
  111. return "二年级";
  112. case "PRIMARY_THREE_GRADE":
  113. return "三年级";
  114. case "PRIMARY_SENIOR_GRADE":
  115. return "四年级";
  116. case "PRESCHOOL":
  117. return "学前";
  118. }
  119. return "undefinde";
  120. }
  121. public static int getIndexGradeByEnum(String gradeEnum) {
  122. switch (gradeEnum) {
  123. case "PRIMARY_FIRST_GRADE":
  124. return 0;
  125. case "PRIMARY_SECOND_GRADE":
  126. return 1;
  127. case "PRIMARY_THREE_GRADE":
  128. return 2;
  129. case "PRIMARY_SENIOR_GRADE":
  130. return 3;
  131. case "PRESCHOOL":
  132. return 4;
  133. }
  134. return -1;
  135. }
  136. public static boolean checkLogin(Context context, View parent) {
  137. if (!Consts.getUID().equals(Consts.getDefaultUid())) {
  138. //已登录,无论登不登录都调用登录...
  139. return true;
  140. }
  141. userLogin(context, parent);
  142. return false;
  143. }
  144. public static boolean checkIsVip() {
  145. if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
  146. if (Consts.getmConstsBaiDuUserBean() == null || Consts.getmConstsBaiDuUserBean().getUserInfo() == null) {
  147. return false;
  148. }
  149. return (Consts.getmConstsBaiDuUserBean().getUserInfo().getIsVip() == 1);
  150. } else {
  151. //除了百度都走这里
  152. return Consts.isIsYFVip();
  153. }
  154. }
  155. public static void userLogin(Context context, View parent) {
  156. if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
  157. //百度渠道调用百度的授权
  158. BotRegisterListener.getBaiDuVipInfo();
  159. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {
  160. TMailSDKUtil.TMailLogin(context);
  161. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
  162. PopWindowUtil.miSoundLoginWindow(context, parent, MiSoundSDKUtil.MI_SOUND_QRCODE_TYPE, miSoundLoginCallBack);
  163. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.JINGDONGFANG.getChannelCode()) ||
  164. Consts.getUmengChannel().equals(ChannelCodeEnum.BUBUGAO.getChannelCode()) ||
  165. Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode()) ||
  166. Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO_PAD.getChannelCode())) {
  167. //京东方、、步步高、义方、联想pad
  168. Intent intent = new Intent(context, LoginQRAlertActivity.class);
  169. context.startActivity(intent);
  170. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.HUAWEI_LIANYUN.getChannelCode())) {
  171. }
  172. }
  173. static PopWindowPresneter.MISoundLoginCallBack miSoundLoginCallBack;
  174. public static void setMISoundLoginCallBack(PopWindowPresneter.MISoundLoginCallBack callBack) {
  175. miSoundLoginCallBack = callBack;
  176. }
  177. public static void clearMISoundLoginCallBack() {
  178. miSoundLoginCallBack = null;
  179. }
  180. public static void userPay(Activity activity) {
  181. if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
  182. //百度渠道调用百度的支付
  183. BotRegisterListener.payBaiDuVip();
  184. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode()) ||
  185. Consts.getUmengChannel().equals(ChannelCodeEnum.JINGDONGFANG.getChannelCode()) ||
  186. Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO_PAD.getChannelCode()) ||
  187. Consts.getUmengChannel().equals(ChannelCodeEnum.BUBUGAO.getChannelCode())) {
  188. //义方调用普通版支付,联想也用
  189. Intent topay = new Intent(activity, PayActivity.class);
  190. activity.startActivity(topay);
  191. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {
  192. //去天猫支付界面
  193. Intent topay = new Intent(activity, TmailPayActivity.class);
  194. activity.startActivity(topay);
  195. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
  196. Intent topay = new Intent(activity, PayActivity.class);
  197. activity.startActivity(topay);
  198. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.HUAWEI_LIANYUN.getChannelCode())) {
  199. }
  200. }
  201. /**
  202. * 判断是否是vip
  203. */
  204. public static void getYFVip(Context context, EfunboxInterfaces.getYFVipInterfaces callback) {
  205. if (!Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
  206. //不是百度渠道,检查是否是义方VIP
  207. if (Consts.getmConstsUserBean() != null) {
  208. OrderApiServerImpl api = new OrderApiServerImpl();
  209. api.getAuth(null, new Callback() {
  210. @Override
  211. public void onSuccess(HttpInfo info) throws IOException {
  212. HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
  213. }.getType());
  214. if (!TextUtils.isEmpty(bean.getData())) {
  215. Consts.setIsYFVip(true);
  216. if (callback != null) {
  217. callback.success();
  218. }
  219. } else {
  220. Consts.setIsYFVip(false);
  221. if (callback != null) {
  222. callback.error();
  223. }
  224. }
  225. }
  226. @Override
  227. public void onFailure(HttpInfo info) throws IOException {
  228. // Toast.makeText(mView.getActivity(),"")
  229. Consts.setIsYFVip(false);
  230. if (callback != null) {
  231. callback.error();
  232. }
  233. }
  234. });
  235. }
  236. } else {
  237. if (callback != null) {
  238. callback.error();
  239. }
  240. }
  241. }
  242. public static String checkNum10000(String num) {
  243. if (TextUtils.isEmpty(num)) {
  244. return "0";
  245. }
  246. if (Float.valueOf(num) > 10000f) {
  247. float a = Float.parseFloat(num) / 10000;
  248. DecimalFormat decimalFormat = new DecimalFormat("#.#");
  249. return String.valueOf(decimalFormat.format(a)) + "万";
  250. }
  251. return num;
  252. }
  253. /**
  254. * 手机号用****号隐藏中间数字
  255. *
  256. * @param phone
  257. * @return
  258. */
  259. public static String setPhoneMiddle(String phone) {
  260. String phone_s = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
  261. return phone_s;
  262. }
  263. /**
  264. * 邮箱用****号隐藏前面的字母
  265. *
  266. * @return
  267. */
  268. public static String setEmailMiddle(String email) {
  269. String emails = email.replaceAll("(\\w?)(\\w+)(\\w)(@\\w+\\.[a-z]+(\\.[a-z]+)?)", "$1****$3$4");
  270. return emails;
  271. }
  272. /**
  273. * 检查是否有活动
  274. */
  275. public static void checkEvents(Context context) {
  276. //检查有没有活动
  277. ActivityEventServerImpl mEventApi = new ActivityEventServerImpl();
  278. mEventApi.getEventListByType(new Callback() {
  279. @Override
  280. public void onSuccess(HttpInfo info) throws IOException {
  281. try {
  282. HttpResultBean<List<EventListBean>> activityBean = info.getRetDetail(new TypeToken<HttpResultBean<List<EventListBean>>>() {
  283. }.getType());
  284. if (Boolean.valueOf(activityBean.getSuccess())) {
  285. //接口返回成功
  286. if (activityBean.getData() != null && activityBean.getData().size() > 0) {
  287. Consts.setHasOtherEvent(true);
  288. // Consts.setIsHaveFlowerEvent(true);
  289. // //有活动
  290. // PopWindowUtil.webviewEventsWindow(context, parent, new PopUtilClickListener() {
  291. // @Override
  292. // public void clickCancel() {
  293. //
  294. // }
  295. //
  296. // @Override
  297. // public void clickSubmit(Object object) {
  298. // //去webview界面,加载活动地址
  299. // toWebFlowerActivity(context);
  300. // }
  301. // }, needWindow);
  302. } else {
  303. //没活动
  304. Consts.setHasOtherEvent(false);
  305. }
  306. }
  307. } catch (Exception e) {
  308. e.printStackTrace();
  309. } finally {
  310. Logger.e("发送了设置index的广播");
  311. Intent intent = new Intent("com.edufound.reader.main.setindex");
  312. context.sendBroadcast(intent);
  313. }
  314. }
  315. @Override
  316. public void onFailure(HttpInfo info) throws IOException {
  317. Logger.e("获取活动失败:" + info.getRetDetail());
  318. Intent intent = new Intent("com.edufound.reader.main.setindex");
  319. context.sendBroadcast(intent);
  320. }
  321. });
  322. }
  323. public static void toWebFlowerActivity(Context context, String url, String activityId) {
  324. Intent showLoadingIntent = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_SHOW);
  325. Consts.getmApplicAtion().getApplicationContext().sendBroadcast(showLoadingIntent);
  326. Intent intent = new Intent(context, WebActivity.class);
  327. intent.putExtra("loadUrl", url);
  328. Map<String, String> map = new HashMap<>();
  329. map.put("uid", Consts.getUID());
  330. map.put("channelCode", Consts.getUmengChannel());
  331. map.put("versionCode", DeviceUtil.getVersionCode(context));
  332. if (activityId != null) {
  333. map.put("activityId", activityId);
  334. }
  335. intent.putExtra("paramsJson", new Gson().toJson(map));
  336. context.startActivity(intent);
  337. }
  338. }