UserInfoSettingActivity.java 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  1. package com.edufound.reader.activity;
  2. import android.annotation.SuppressLint;
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.os.Handler;
  7. import android.text.InputFilter;
  8. import android.text.TextUtils;
  9. import android.view.KeyEvent;
  10. import android.view.View;
  11. import android.view.inputmethod.EditorInfo;
  12. import android.view.inputmethod.InputMethodManager;
  13. import android.widget.EditText;
  14. import android.widget.FrameLayout;
  15. import android.widget.ImageView;
  16. import android.widget.LinearLayout;
  17. import android.widget.TextView;
  18. import android.widget.Toast;
  19. import com.baidu.duer.bot.directive.payload.AmountInfo;
  20. import com.baidu.duer.botsdk.BotIntent;
  21. import com.edufound.reader.R;
  22. import com.edufound.reader.annotation.BindView;
  23. import com.edufound.reader.application.EApplication;
  24. import com.edufound.reader.base.BaseMvpActivity;
  25. import com.edufound.reader.bean.ChannelCodeEnum;
  26. import com.edufound.reader.bean.UserBean;
  27. import com.edufound.reader.contract.UserInfoSettingContract;
  28. import com.edufound.reader.cusview.CusToast;
  29. import com.edufound.reader.listener.PopUtilClickListener;
  30. import com.edufound.reader.util.huaweiutil.HuaWeiUtil;
  31. import com.edufound.reader.util.miutil.MiSoundSDKUtil;
  32. import com.edufound.reader.popwindow.PopWindowUtil;
  33. import com.edufound.reader.presenter.PopWindowPresneter;
  34. import com.edufound.reader.presenter.UserInfoSettingPresenter;
  35. import com.edufound.reader.util.Consts;
  36. import com.edufound.reader.util.EfunboxUtil;
  37. import com.edufound.reader.util.GlideUtils;
  38. import com.edufound.reader.util.LongClickUtils;
  39. import com.edufound.reader.util.MMKVUtil;
  40. import com.jakewharton.rxbinding4.view.RxView;
  41. import com.orhanobut.logger.Logger;
  42. import java.util.HashMap;
  43. import androidx.annotation.NonNull;
  44. import io.reactivex.rxjava3.annotations.Nullable;
  45. public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPresenter> implements UserInfoSettingContract.View {
  46. Activity mActivity;
  47. @BindView(id = R.id.activity_userinfo_setting_back)
  48. ImageView mBack;
  49. @BindView(id = R.id.activity_userinfo_setting_loginout_layout)
  50. LinearLayout mLoginOut;
  51. @BindView(id = R.id.activity_userinfo_setting_privservices_layout)
  52. LinearLayout mPrivServices;
  53. @BindView(id = R.id.activity_userinfo_setting_services_layout)
  54. LinearLayout mAgreementServices;
  55. @BindView(id = R.id.activity_userinfo_setting_cancellation_layout)
  56. LinearLayout mCancellationLayout;
  57. @BindView(id = R.id.activity_userinfo_setting_bindwechat_layout)
  58. LinearLayout mBindWeChat;
  59. @BindView(id = R.id.activity_userinfo_setting_switchuser_layout)
  60. LinearLayout mSwitchLayout;
  61. @BindView(id = R.id.activity_userinfo_setting_bindphonenum_layout)
  62. LinearLayout mBindPhoneNumLayout;
  63. @BindView(id = R.id.activity_userinfo_setting_nickname)
  64. EditText mNickName;
  65. @BindView(id = R.id.activity_userinfo_setting_gender_male)
  66. FrameLayout mGenderMale;
  67. @BindView(id = R.id.activity_userinfo_setting_gender_female)
  68. FrameLayout mGenderFeMale;
  69. @BindView(id = R.id.activity_userinfo_setting_grade)
  70. TextView mGrade;
  71. @BindView(id = R.id.activity_userinfo_setting_userhead)
  72. ImageView mUserHead;
  73. @BindView(id = R.id.activity_userinfo_setting_userhead_num)
  74. TextView mUserNum;
  75. boolean hasBindPhone = false;
  76. @Override
  77. public int getLayoutId() {
  78. return R.layout.activity_userinfo_setting;
  79. }
  80. @SuppressLint("AutoDispose")
  81. @Override
  82. public void initView() {
  83. mActivity = this;
  84. mPresenter = new UserInfoSettingPresenter();
  85. mPresenter.attachView(this);
  86. addUiClickListener(mBack, o -> {
  87. mNickName.clearFocus();
  88. hideSoftInput();
  89. mActivity.finish();
  90. });
  91. addUiClickListener(mPrivServices, o -> {
  92. if (mNickName.hasFocus()) {
  93. mNickName.clearFocus();
  94. return;
  95. }
  96. Intent intent = new Intent(getActivity(), WebActivity.class);
  97. intent.putExtra("loadUrl", Consts.getPrivServiceUrl());
  98. getActivity().startActivity(intent);
  99. });
  100. {
  101. LongClickUtils.setLongClick(new Handler(), mUserHead, 5000, new View.OnLongClickListener() {
  102. @Override
  103. public boolean onLongClick(View v) {
  104. //todo:补充长按事件的处理逻辑
  105. if (MMKVUtil.getInstance().decodeString("loginVisibility").equals("0")) {
  106. mLoginOut.setVisibility(View.VISIBLE);
  107. MMKVUtil.getInstance().encode("loginVisibility", "1");
  108. } else {
  109. mLoginOut.setVisibility(View.GONE);
  110. MMKVUtil.getInstance().encode("loginVisibility", "0");
  111. }
  112. return true;
  113. }
  114. }, new View.OnClickListener() {
  115. @Override
  116. public void onClick(View v) {
  117. CusToast.getInstance(mActivity).show("学号:" + Consts.getmConstsUserBean().getEid(), 2000);
  118. }
  119. });
  120. //测试用
  121. if (MMKVUtil.getInstance().decodeString("loginVisibility").equals("0")) {
  122. mLoginOut.setVisibility(View.GONE);
  123. } else {
  124. mLoginOut.setVisibility(View.VISIBLE);
  125. }
  126. }
  127. addUiClickListener(mAgreementServices, o -> {
  128. if (mNickName.hasFocus()) {
  129. mNickName.clearFocus();
  130. return;
  131. }
  132. Intent intent = new Intent(getActivity(), WebActivity.class);
  133. intent.putExtra("loadUrl", Consts.getAgreementServicesUrl());
  134. getActivity().startActivity(intent);
  135. });
  136. if (Consts.getUMengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
  137. //百度渠道,隐藏注销和退出登录按钮
  138. mCancellationLayout.setVisibility(View.GONE);
  139. mLoginOut.setVisibility(View.GONE);
  140. mBindPhoneNumLayout.setVisibility(View.GONE);
  141. } else if (Consts.getUMengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
  142. //义方渠道
  143. mCancellationLayout.setVisibility(View.VISIBLE);
  144. mLoginOut.setVisibility(View.VISIBLE);
  145. mBindPhoneNumLayout.setVisibility(View.GONE);
  146. } else if (Consts.getUMengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {
  147. mSwitchLayout.setVisibility(View.GONE);
  148. mBindWeChat.setVisibility(View.GONE);
  149. mBindPhoneNumLayout.setVisibility(View.GONE);
  150. } else if (Consts.getUMengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
  151. mBindWeChat.setVisibility(View.GONE);
  152. mSwitchLayout.setVisibility(View.GONE);
  153. mBindPhoneNumLayout.setVisibility(View.VISIBLE);
  154. addUiClickListener(mBindPhoneNumLayout, o -> {
  155. if (hasBindPhone) {
  156. PopWindowUtil.miSoundLoginWindow(mActivity, getRootView(), MiSoundSDKUtil.MI_SOUND_SHOW_BINDPHONENUM, null);
  157. } else {
  158. PopWindowUtil.miSoundLoginWindow(mActivity, getRootView(), MiSoundSDKUtil.MI_SOUND_BIND_PHONENUM, new PopWindowPresneter.MISoundLoginCallBack() {
  159. @Override
  160. public void success() {
  161. Logger.e("绑定成功返回了!!!!!!!!!!!!!!!!!!!");
  162. hasBindPhone = true;
  163. }
  164. @Override
  165. public void closeWindow() {
  166. Logger.e("closeWindow");
  167. }
  168. });
  169. }
  170. });
  171. } else if (Consts.getUMengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
  172. mBindPhoneNumLayout.setVisibility(View.GONE);
  173. } else if (Consts.getUMengChannel().equals(ChannelCodeEnum.HUAWEI_LIANYUN.getChannelCode())) {
  174. mBindWeChat.setVisibility(View.GONE);
  175. mBindPhoneNumLayout.setVisibility(View.GONE);
  176. } else if (Consts.getUMengChannel().equals(ChannelCodeEnum.BUBUGAO.getChannelCode()) ||
  177. Consts.getUMengChannel().equals(ChannelCodeEnum.LENOVO_PAD.getChannelCode()) ||
  178. Consts.getUMengChannel().equals(ChannelCodeEnum.JINGDONGFANG.getChannelCode()) ||
  179. Consts.getUMengChannel().equals(ChannelCodeEnum.XUNFEI.getChannelCode()) ||
  180. Consts.getUMengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
  181. mBindPhoneNumLayout.setVisibility(View.GONE);
  182. mBindWeChat.setVisibility(View.GONE);
  183. }
  184. addUiClickListener(mLoginOut, o -> {
  185. if (mNickName.hasFocus()) {
  186. mNickName.clearFocus();
  187. return;
  188. }
  189. PopWindowUtil.showExitLoginWindow(mActivity, getRootView(), new PopUtilClickListener() {
  190. @Override
  191. public void clickCancel() {
  192. }
  193. @Override
  194. public void clickSubmit(Object obj) {
  195. CusToast.getInstance(mActivity).show("退出账号", 2000);
  196. mPresenter.loginOut();
  197. if (Consts.getUMengChannel().equals(ChannelCodeEnum.HUAWEI_LIANYUN.getChannelCode())) {
  198. //华为联运还要退出华为账号
  199. HuaWeiUtil.signOut();
  200. }
  201. }
  202. });
  203. });
  204. //隐藏注销按钮,都不要
  205. mCancellationLayout.setVisibility(View.GONE);
  206. addUiClickListener(mCancellationLayout, o -> {
  207. Logger.e("註銷按鈕");
  208. if (mNickName.hasFocus()) {
  209. mNickName.clearFocus();
  210. return;
  211. }
  212. PopWindowUtil.showCancellationAccountWindow(mActivity, getRootView(), new PopUtilClickListener() {
  213. @Override
  214. public void clickCancel() {
  215. }
  216. @Override
  217. public void clickSubmit(Object obj) {
  218. CusToast.getInstance(mActivity).show("注销账号", 2000);
  219. mPresenter.userCancellation();
  220. }
  221. });
  222. });
  223. addUiClickListener(mBindWeChat, o -> {
  224. if (mNickName.hasFocus()) {
  225. mNickName.clearFocus();
  226. return;
  227. }
  228. PopWindowUtil.showBindWeChatWindow(mActivity, getRootView(), null);
  229. });
  230. addUiClickListener(mSwitchLayout, o -> {
  231. if (mNickName.hasFocus()) {
  232. mNickName.clearFocus();
  233. return;
  234. }
  235. if (Consts.getUMengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
  236. //小米的特殊处理
  237. PopWindowUtil.miSoundLoginWindow(mActivity, getRootView(), MiSoundSDKUtil.MI_SOUND_QRCODE_UPDATE_USER, new PopWindowPresneter.MISoundLoginCallBack() {
  238. @Override
  239. public void success() {
  240. }
  241. @Override
  242. public void closeWindow() {
  243. Logger.e("closeWindow");
  244. mPresenter.checkLogin();
  245. }
  246. });
  247. return;
  248. }
  249. EfunboxUtil.userLogin(getActivity(), getRootView());
  250. });
  251. addUiClickListener(mGenderMale, o -> {
  252. if (mNickName.hasFocus()) {
  253. mNickName.clearFocus();
  254. return;
  255. }
  256. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  257. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  258. if (Consts.getmConstsUserBean() != null) {
  259. Consts.getmConstsUserBean().setGender("1");
  260. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  261. }
  262. });
  263. addUiClickListener(mGenderFeMale, o -> {
  264. if (mNickName.hasFocus()) {
  265. mNickName.clearFocus();
  266. return;
  267. }
  268. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  269. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  270. if (Consts.getmConstsUserBean() != null) {
  271. Consts.getmConstsUserBean().setGender("0");
  272. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  273. }
  274. });
  275. mGrade.setOnClickListener(new View.OnClickListener() {
  276. @Override
  277. public void onClick(View v) {
  278. try {
  279. if (mNickName.hasFocus()) {
  280. mNickName.clearFocus();
  281. return;
  282. }
  283. PopWindowUtil.showSelectGradeWindow(getActivity(), getRootView(), EfunboxUtil.getIndexGradeByEnum(mPresenter.getGradeEnum()), new PopUtilClickListener() {
  284. @Override
  285. public void clickCancel() {
  286. }
  287. @Override
  288. public void clickSubmit(Object object) {
  289. // Toast.makeText(getActivity(), "选择了:" + EfunboxUtil.getEnumByCNGrade(object.toString()), Toast.LENGTH_SHORT).show();
  290. Consts.getmConstsUserBean().setGrade(EfunboxUtil.getEnumByCNGrade(object.toString()));
  291. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  292. }
  293. });
  294. } catch (Exception e) {
  295. e.printStackTrace();
  296. }
  297. }
  298. });
  299. // addUiClickListener(mGrade, o -> {
  300. //
  301. // });
  302. RxView.focusChanges(mNickName).
  303. subscribe(hasFocus ->
  304. {
  305. if (!hasFocus) {
  306. if (TextUtils.isEmpty(mNickName.getText().toString())) {
  307. // Toast.makeText(getActivity(), "请输入昵称", Toast.LENGTH_SHORT).show();
  308. return;
  309. }
  310. hideSoftInput();
  311. Consts.getmConstsUserBean().setNickName(mNickName.getText().toString().trim());
  312. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  313. } else {
  314. mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
  315. }
  316. });
  317. mNickName.setOnEditorActionListener(new TextView.OnEditorActionListener() {
  318. @Override
  319. public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
  320. if (actionId == KeyEvent.ACTION_DOWN || actionId == EditorInfo.IME_ACTION_DONE) {
  321. if (TextUtils.isEmpty(mNickName.getText().toString())) {
  322. // CusToast.getInstance(mActivity).show("请输入昵称", 2000);
  323. Toast.makeText(mActivity, "请输入昵称", Toast.LENGTH_SHORT).show();
  324. return true;
  325. }
  326. hideSoftInput();
  327. Consts.getmConstsUserBean().setNickName(mNickName.getText().toString().trim());
  328. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  329. mNickName.clearFocus();
  330. return true;
  331. }
  332. return false;
  333. }
  334. });
  335. if (Consts.getUMengChannel().equals(ChannelCodeEnum.BAIDU)) {
  336. if (Consts.getmConstsBaiDuUserBean() != null) {
  337. mUserNum.setText("账号:" + Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId());
  338. }
  339. } else {
  340. mUserNum.setVisibility(View.INVISIBLE);
  341. }
  342. mPresenter.getMyInfo();
  343. }
  344. private void hideSoftInput() {
  345. InputMethodManager manager = ((InputMethodManager) Consts.getmApplicAtion().getSystemService(Context.INPUT_METHOD_SERVICE));
  346. if (manager != null) {
  347. manager.hideSoftInputFromWindow(mNickName.getWindowToken(), 0);
  348. }
  349. }
  350. @Override
  351. public void onGetDisconnect() {
  352. }
  353. @Override
  354. public void onGetMobileConnect() {
  355. }
  356. @Override
  357. public void onGetWifiConnect() {
  358. }
  359. @Override
  360. public void showLoading() {
  361. }
  362. @Override
  363. public void hideLoading() {
  364. }
  365. @Override
  366. public void onError(String errMessage) {
  367. }
  368. @Override
  369. public Activity getActivity() {
  370. return mActivity;
  371. }
  372. @Override
  373. public void getUserInfoSuccess(UserBean bean) {
  374. if (bean.getNickName().length() <= 6) {
  375. mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
  376. } else {
  377. mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(11)});
  378. }
  379. mNickName.setText(bean.getNickName());
  380. mNickName.setTag(bean.getUserId());
  381. mGrade.setText(EfunboxUtil.getCNGradeByEnum(bean.getGrade()));
  382. if (!TextUtils.isEmpty(bean.getMobile())) {
  383. hasBindPhone = true;
  384. }
  385. if (bean.getGender().equals("1")) {
  386. //男孩
  387. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  388. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  389. GlideUtils.loadImage(getActivity(), R.drawable.activity_userinfo_setting_boy, mUserHead);
  390. } else if (bean.getGender().equals("0")) {
  391. //女孩
  392. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  393. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  394. GlideUtils.loadImage(getActivity(), R.drawable.activity_userinfo_setting_girl, mUserHead);
  395. }
  396. if (bean.getAvatar() == null || bean.getAvatar().equals("")) {
  397. } else {
  398. GlideUtils.loadCircleImage(mActivity, bean.getAvatar(), mUserHead);
  399. }
  400. }
  401. @Override
  402. public void loginOutSuccess() {
  403. EApplication.reloadApp(-1);
  404. }
  405. @Override
  406. protected void onDestroy() {
  407. mPresenter.activityDestory();
  408. super.onDestroy();
  409. }
  410. @Override
  411. protected void botHandleIntent(BotIntent intent, String customData) {
  412. super.botHandleIntent(intent, customData);
  413. Logger.e(getLocalClassName() + "botHandleIntent");
  414. }
  415. @Override
  416. protected void botOnClickLink(String url, HashMap<String, String> paramMap) {
  417. super.botOnClickLink(url, paramMap);
  418. Logger.e(getLocalClassName() + "botOnClickLink");
  419. }
  420. @Override
  421. protected void botOnHandleScreenNavigatorEvent(int event) {
  422. super.botOnHandleScreenNavigatorEvent(event);
  423. Logger.e(getLocalClassName() + "botOnHandleScreenNavigatorEvent");
  424. }
  425. @Override
  426. protected void botOnLinkAccountSucceed(String s, String s1) {
  427. super.botOnLinkAccountSucceed(s, s1);
  428. Logger.e(getLocalClassName() + "botOnLinkAccountSucceed");
  429. // RequestBotSdkUtil.requestBuyProduct();
  430. }
  431. @Override
  432. protected void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
  433. super.botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg);
  434. Logger.e(getLocalClassName() + "botOnChargeStatusUpdated");
  435. }
  436. @Override
  437. protected void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
  438. super.botOnBuyStatusUpdated(purchaseResult, productId, baiduOrderId, sellerOrderId, msg, token);
  439. Logger.e(getLocalClassName() + "botOnBuyStatusUpdated");
  440. }
  441. @Override
  442. protected void refUserInfo(UserBean bean) {
  443. super.refUserInfo(bean);
  444. getUserInfoSuccess(bean);
  445. }
  446. }