UserInfoSettingActivity.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  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.graphics.Color;
  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.botsdk.BotRegisterListener;
  28. import com.edufound.reader.contract.UserInfoSettingContract;
  29. import com.edufound.reader.cusview.CusToast;
  30. import com.edufound.reader.listener.PopUtilClickListener;
  31. import com.edufound.reader.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.SizeUtils;
  39. import com.jakewharton.rxbinding4.view.RxView;
  40. import com.orhanobut.logger.Logger;
  41. import java.util.HashMap;
  42. import androidx.annotation.NonNull;
  43. import io.reactivex.rxjava3.annotations.Nullable;
  44. public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPresenter> implements UserInfoSettingContract.View {
  45. Activity mActivity;
  46. @BindView(id = R.id.activity_userinfo_setting_back)
  47. ImageView mBack;
  48. @BindView(id = R.id.activity_userinfo_setting_loginout_layout)
  49. LinearLayout mLoginOut;
  50. @BindView(id = R.id.activity_userinfo_setting_privservices_layout)
  51. LinearLayout mPrivServices;
  52. @BindView(id = R.id.activity_userinfo_setting_services_layout)
  53. LinearLayout mAgreementServices;
  54. @BindView(id = R.id.activity_userinfo_setting_cancellation_layout)
  55. LinearLayout mCancellationLayout;
  56. @BindView(id = R.id.activity_userinfo_setting_bindwechat_layout)
  57. LinearLayout mBindWeChat;
  58. @BindView(id = R.id.activity_userinfo_setting_switchuser_layout)
  59. LinearLayout mSwitchLayout;
  60. @BindView(id = R.id.activity_userinfo_setting_bindphonenum_layout)
  61. LinearLayout mBindPhoneNumLayout;
  62. @BindView(id = R.id.activity_userinfo_setting_nickname)
  63. EditText mNickName;
  64. @BindView(id = R.id.activity_userinfo_setting_gender_male)
  65. FrameLayout mGenderMale;
  66. @BindView(id = R.id.activity_userinfo_setting_gender_female)
  67. FrameLayout mGenderFeMale;
  68. @BindView(id = R.id.activity_userinfo_setting_grade)
  69. TextView mGrade;
  70. @BindView(id = R.id.activity_userinfo_setting_userhead)
  71. ImageView mUserHead;
  72. @BindView(id = R.id.activity_userinfo_setting_userhead_num)
  73. TextView mUserNum;
  74. boolean hasBindPhone = false;
  75. @Override
  76. public int getLayoutId() {
  77. return R.layout.activity_userinfo_setting;
  78. }
  79. @SuppressLint("AutoDispose")
  80. @Override
  81. public void initView() {
  82. mActivity = this;
  83. mPresenter = new UserInfoSettingPresenter();
  84. mPresenter.attachView(this);
  85. addUiClickListener(mBack, o -> {
  86. mNickName.clearFocus();
  87. hideSoftInput();
  88. mActivity.finish();
  89. });
  90. addUiClickListener(mPrivServices, o -> {
  91. if (mNickName.hasFocus()) {
  92. mNickName.clearFocus();
  93. return;
  94. }
  95. Intent intent = new Intent(getActivity(), WebActivity.class);
  96. intent.putExtra("loadUrl", Consts.getPrivServiceUrl());
  97. getActivity().startActivity(intent);
  98. });
  99. addUiClickListener(mAgreementServices, o -> {
  100. if (mNickName.hasFocus()) {
  101. mNickName.clearFocus();
  102. return;
  103. }
  104. Intent intent = new Intent(getActivity(), WebActivity.class);
  105. intent.putExtra("loadUrl", Consts.getAgreementServicesUrl());
  106. getActivity().startActivity(intent);
  107. });
  108. if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
  109. //百度渠道,隐藏注销和退出登录按钮
  110. mCancellationLayout.setVisibility(View.GONE);
  111. mLoginOut.setVisibility(View.GONE);
  112. mBindPhoneNumLayout.setVisibility(View.GONE);
  113. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
  114. //义方渠道
  115. mCancellationLayout.setVisibility(View.VISIBLE);
  116. mLoginOut.setVisibility(View.VISIBLE);
  117. mBindPhoneNumLayout.setVisibility(View.GONE);
  118. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {
  119. mSwitchLayout.setVisibility(View.GONE);
  120. mBindWeChat.setVisibility(View.GONE);
  121. mBindPhoneNumLayout.setVisibility(View.GONE);
  122. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
  123. mBindWeChat.setVisibility(View.GONE);
  124. mBindPhoneNumLayout.setVisibility(View.VISIBLE);
  125. addUiClickListener(mBindPhoneNumLayout, o -> {
  126. if (hasBindPhone) {
  127. PopWindowUtil.miSoundLoginWindow(mActivity, getRootView(), MiSoundSDKUtil.MI_SOUND_SHOW_BINDPHONENUM, null);
  128. } else {
  129. PopWindowUtil.miSoundLoginWindow(mActivity, getRootView(), MiSoundSDKUtil.MI_SOUND_BIND_PHONENUM, new PopWindowPresneter.MISoundLoginCallBack() {
  130. @Override
  131. public void success() {
  132. Logger.e("绑定成功返回了!!!!!!!!!!!!!!!!!!!");
  133. hasBindPhone = true;
  134. }
  135. });
  136. }
  137. });
  138. }
  139. addUiClickListener(mLoginOut, o -> {
  140. Logger.e("mLoginOut");
  141. if (mNickName.hasFocus()) {
  142. mNickName.clearFocus();
  143. return;
  144. }
  145. PopWindowUtil.showExitLoginWindow(mActivity, getRootView(), new PopUtilClickListener() {
  146. @Override
  147. public void clickCancel() {
  148. }
  149. @Override
  150. public void clickSubmit(Object obj) {
  151. Toast.makeText(mActivity, "退出账号", Toast.LENGTH_SHORT).show();
  152. mPresenter.loginOut();
  153. }
  154. });
  155. });
  156. addUiClickListener(mCancellationLayout, o -> {
  157. Logger.e("註銷按鈕");
  158. if (mNickName.hasFocus()) {
  159. mNickName.clearFocus();
  160. return;
  161. }
  162. PopWindowUtil.showCancellationAccountWindow(mActivity, getRootView(), new PopUtilClickListener() {
  163. @Override
  164. public void clickCancel() {
  165. }
  166. @Override
  167. public void clickSubmit(Object obj) {
  168. Toast.makeText(mActivity, "注销账号", Toast.LENGTH_SHORT).show();
  169. mPresenter.userCancellation();
  170. }
  171. });
  172. });
  173. addUiClickListener(mBindWeChat, o -> {
  174. if (mNickName.hasFocus()) {
  175. mNickName.clearFocus();
  176. return;
  177. }
  178. PopWindowUtil.showBindWeChatWindow(mActivity, getRootView(), null);
  179. });
  180. addUiClickListener(mSwitchLayout, o -> {
  181. if (mNickName.hasFocus()) {
  182. mNickName.clearFocus();
  183. return;
  184. }
  185. EfunboxUtil.userLogin(getActivity(), getRootView());
  186. });
  187. addUiClickListener(mGenderMale, o -> {
  188. if (mNickName.hasFocus()) {
  189. mNickName.clearFocus();
  190. return;
  191. }
  192. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  193. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  194. Consts.getmConstsUserBean().setGender("1");
  195. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  196. });
  197. addUiClickListener(mGenderFeMale, o -> {
  198. if (mNickName.hasFocus()) {
  199. mNickName.clearFocus();
  200. return;
  201. }
  202. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  203. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  204. Consts.getmConstsUserBean().setGender("0");
  205. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  206. });
  207. addUiClickListener(mGrade, o -> {
  208. if (mNickName.hasFocus()) {
  209. mNickName.clearFocus();
  210. return;
  211. }
  212. PopWindowUtil.showSelectGradeWindow(getActivity(), getRootView(), EfunboxUtil.getIndexGradeByEnum(mPresenter.getGradeEnum()), new PopUtilClickListener() {
  213. @Override
  214. public void clickCancel() {
  215. }
  216. @Override
  217. public void clickSubmit(Object object) {
  218. // Toast.makeText(getActivity(), "选择了:" + EfunboxUtil.getEnumByCNGrade(object.toString()), Toast.LENGTH_SHORT).show();
  219. Consts.getmConstsUserBean().setGrade(EfunboxUtil.getEnumByCNGrade(object.toString()));
  220. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  221. }
  222. });
  223. });
  224. RxView.focusChanges(mNickName).subscribe(hasFocus -> {
  225. if (!hasFocus) {
  226. if (TextUtils.isEmpty(mNickName.getText().toString())) {
  227. // Toast.makeText(getActivity(), "请输入昵称", Toast.LENGTH_SHORT).show();
  228. return;
  229. }
  230. hideSoftInput();
  231. Consts.getmConstsUserBean().setNickName(mNickName.getText().toString().trim());
  232. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  233. } else {
  234. mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
  235. }
  236. });
  237. mNickName.setOnEditorActionListener(new TextView.OnEditorActionListener() {
  238. @Override
  239. public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
  240. if (actionId == KeyEvent.ACTION_DOWN || actionId == EditorInfo.IME_ACTION_DONE) {
  241. if (TextUtils.isEmpty(mNickName.getText().toString())) {
  242. // CusToast.getInstance(mActivity).show("请输入昵称", 2000);
  243. Toast.makeText(mActivity, "请输入昵称", Toast.LENGTH_SHORT).show();
  244. return true;
  245. }
  246. hideSoftInput();
  247. Consts.getmConstsUserBean().setNickName(mNickName.getText().toString().trim());
  248. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  249. mNickName.clearFocus();
  250. return true;
  251. }
  252. return false;
  253. }
  254. });
  255. if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU)) {
  256. if (Consts.getmConstsBaiDuUserBean() != null) {
  257. mUserNum.setText("账号:" + Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId());
  258. }
  259. } else {
  260. mUserNum.setVisibility(View.INVISIBLE);
  261. }
  262. mPresenter.getMyInfo();
  263. }
  264. private void hideSoftInput() {
  265. InputMethodManager manager = ((InputMethodManager) Consts.getmApplicAtion().getSystemService(Context.INPUT_METHOD_SERVICE));
  266. if (manager != null) {
  267. manager.hideSoftInputFromWindow(mNickName.getWindowToken(), 0);
  268. }
  269. }
  270. @Override
  271. public void onGetDisconnect() {
  272. }
  273. @Override
  274. public void onGetMobileConnect() {
  275. }
  276. @Override
  277. public void onGetWifiConnect() {
  278. }
  279. @Override
  280. public void showLoading() {
  281. }
  282. @Override
  283. public void hideLoading() {
  284. }
  285. @Override
  286. public void onError(String errMessage) {
  287. }
  288. @Override
  289. public Activity getActivity() {
  290. return mActivity;
  291. }
  292. @Override
  293. public void getUserInfoSuccess(UserBean bean) {
  294. if (bean.getNickName().length() <= 6) {
  295. mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
  296. } else {
  297. mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(11)});
  298. }
  299. mNickName.setText(bean.getNickName());
  300. mGrade.setText(EfunboxUtil.getCNGradeByEnum(bean.getGrade()));
  301. if (!TextUtils.isEmpty(bean.getMobile())) {
  302. hasBindPhone = true;
  303. }
  304. if (bean.getGender().equals("1")) {
  305. //男孩
  306. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  307. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  308. GlideUtils.loadImage(getActivity(), R.drawable.activity_userinfo_setting_boy, mUserHead);
  309. } else if (bean.getGender().equals("0")) {
  310. //女孩
  311. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  312. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  313. GlideUtils.loadImage(getActivity(), R.drawable.activity_userinfo_setting_girl, mUserHead);
  314. }
  315. Logger.e("bean.getAvatar():" + bean.getAvatar());
  316. if (bean.getAvatar() == null || bean.getAvatar().equals("")) {
  317. } else {
  318. GlideUtils.loadCircleImage(mActivity, bean.getAvatar(), mUserHead);
  319. }
  320. }
  321. @Override
  322. public void loginOutSuccess() {
  323. for (int i = 0; i < EApplication.mActivityList.size(); i++) {
  324. EApplication.mActivityList.get(i).finish();
  325. }
  326. Intent intent = new Intent(getActivity(), MainActivity.class);
  327. startActivity(intent);
  328. }
  329. @Override
  330. protected void onDestroy() {
  331. mPresenter.activityDestory();
  332. super.onDestroy();
  333. }
  334. @Override
  335. protected void botHandleIntent(BotIntent intent, String customData) {
  336. super.botHandleIntent(intent, customData);
  337. Logger.e(getLocalClassName() + "botHandleIntent");
  338. }
  339. @Override
  340. protected void botOnClickLink(String url, HashMap<String, String> paramMap) {
  341. super.botOnClickLink(url, paramMap);
  342. Logger.e(getLocalClassName() + "botOnClickLink");
  343. }
  344. @Override
  345. protected void botOnHandleScreenNavigatorEvent(int event) {
  346. super.botOnHandleScreenNavigatorEvent(event);
  347. Logger.e(getLocalClassName() + "botOnHandleScreenNavigatorEvent");
  348. }
  349. @Override
  350. protected void botOnLinkAccountSucceed(String s, String s1) {
  351. super.botOnLinkAccountSucceed(s, s1);
  352. Logger.e(getLocalClassName() + "botOnLinkAccountSucceed");
  353. // RequestBotSdkUtil.requestBuyProduct();
  354. }
  355. @Override
  356. protected void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
  357. super.botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg);
  358. Logger.e(getLocalClassName() + "botOnChargeStatusUpdated");
  359. }
  360. @Override
  361. protected void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
  362. super.botOnBuyStatusUpdated(purchaseResult, productId, baiduOrderId, sellerOrderId, msg, token);
  363. Logger.e(getLocalClassName() + "botOnBuyStatusUpdated");
  364. }
  365. @Override
  366. protected void refUserInfo(UserBean bean) {
  367. super.refUserInfo(bean);
  368. getUserInfoSuccess(bean);
  369. }
  370. }