UserInfoSettingActivity.java 21 KB

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