From d1ebb94e1a17b7c25d4fcf73d85345d92cc86b5c Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期二, 02 一月 2024 18:41:34 +0800
Subject: [PATCH] 2024年01月02日18:41:32

---
 app/src/main/java/com/hdl/photovoltaic/ui/me/PersonalDataActivity.java |  196 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 184 insertions(+), 12 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/me/PersonalDataActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/me/PersonalDataActivity.java
index 1aa9e85..4a99cb1 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/me/PersonalDataActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/me/PersonalDataActivity.java
@@ -1,11 +1,23 @@
 package com.hdl.photovoltaic.ui.me;
 
-import android.app.AppComponentFactory;
+import android.Manifest;
+import android.content.Intent;
+import android.os.Build;
 import android.os.Bundle;
+import android.view.Gravity;
 import android.view.View;
 
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.core.app.ActivityCompat;
+
+
 import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.google.gson.JsonObject;
+import com.hdl.linkpm.sdk.core.callback.IResponseCallBack;
 import com.hdl.linkpm.sdk.core.exception.HDLException;
+import com.hdl.linkpm.sdk.user.HDLLinkPMUser;
+import com.hdl.linkpm.sdk.user.bean.ImageSubmitInfo;
 import com.hdl.photovoltaic.R;
 import com.hdl.photovoltaic.base.CustomBaseActivity;
 
@@ -13,9 +25,14 @@
 import com.hdl.photovoltaic.databinding.ActivityPersonalDataBinding;
 import com.hdl.photovoltaic.listener.CloudCallBeak;
 import com.hdl.photovoltaic.other.HdlAccountLogic;
+import com.hdl.photovoltaic.other.HdlLogLogic;
 import com.hdl.photovoltaic.other.HdlThreadLogic;
 import com.hdl.photovoltaic.utils.GlideUtils;
+import com.hdl.photovoltaic.utils.PermissionUtils;
 import com.hdl.photovoltaic.widget.ConfirmationInputDialog;
+import com.hdl.photovoltaic.widget.popupview.CameraAlbumPopWindow;
+
+import java.io.File;
 
 
 /**
@@ -23,8 +40,12 @@
  */
 public class PersonalDataActivity extends CustomBaseActivity {
     private ActivityPersonalDataBinding viewBinding;
+
+    private CameraAlbumPopWindow cameraAlbumPopWindow;
     //澶村儚鍦板潃
-    private String mMemberHeadIcon;
+    private String mMemberHeadIconUrl;
+    private ActivityResultLauncher<String[]> generalPermission;
+
 
     @Override
     public Object getContentView() {
@@ -36,7 +57,7 @@
     public void onBindView(Bundle savedInstanceState) {
         setNotificationBarBackgroundColor(CustomColor.white);
         setStatusBarTextColor();
-        mMemberHeadIcon = getIntent().getStringExtra("memberHeadIcon");
+        mMemberHeadIconUrl = getIntent().getStringExtra("memberHeadIcon");
         //鍒濆鍖�
         initView();
         //鍒濆鍖栫晫闈㈢洃鍚櫒
@@ -46,16 +67,57 @@
     }
 
     private void initData() {
-        viewBinding.toolbarTopFragmentMeRl.topBackBtn.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                finish();
-            }
-        });
+//        generalPermission = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback<Map<String, Boolean>>() {
+//            @Override
+//            public void onActivityResult(Map<String, Boolean> result) {
+//
+//            }
+//        });
+//        generalPermission.launch(new String[]{});
+
+//        generalPermission = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback<Map<String, Boolean>>() {
+//            @Override
+//            public void onActivityResult(Map<String, Boolean> result) {
+//
+////                        if (value == PermissionUtils.STATUS_REFUSE_PERMANENT) {
+////                            HdlThreadLogic.toast(_mActivity, R.string.permission_open);
+////                            return;
+////                        }
+//                        changedUserAvatar();
+//            }
+//        });
+
     }
 
     private void initEvent() {
 
+        viewBinding.toolbarTopFragmentMeRl.topBackBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                backPressedData();
+                finish();
+            }
+        });
+        viewBinding.personalDataUserPortraitIl.getRoot().setOnClickListener(new View.OnClickListener() {
+
+            @Override
+            public void onClick(View v) {
+                //Manifest.permission.WRITE_EXTERNAL_STORAGE 璇诲啓璁惧涓婄殑鐓х墖浠ュ強鏂囦欢
+                //generalPermission.launch(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE});
+
+                PermissionUtils.requestPermissionsResultCallback(_mActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE, new PermissionUtils.PermissionState() {
+                    @Override
+                    public void Success(int value) {
+                        if (value == PermissionUtils.STATUS_REFUSE_PERMANENT) {
+//                            HdlThreadLogic.toast(_mActivity, R.string.permission_open);
+                            return;
+                        }
+                        changedUserAvatar();
+                    }
+                }, true);
+
+            }
+        });
 
         viewBinding.personalDataUserNameIl.getRoot().setOnClickListener(new View.OnClickListener() {
             @Override
@@ -63,6 +125,7 @@
                 changedNickname();
             }
         });
+
 
     }
 
@@ -74,9 +137,55 @@
         viewBinding.personalDataUserPortraitIl.sllLlRlNameTv.setText(R.string.me_personal_data_portrait);
         viewBinding.personalDataUserNameIl.sllLlRlNameTv.setText(R.string.me_personal_data_user_name);
         viewBinding.personalDataUserPortraitIl.sllLlRlRightContentIv.setVisibility(View.VISIBLE);
-        GlideUtils.getRoundedCornersImage(_mActivity, this.mMemberHeadIcon, viewBinding.personalDataUserPortraitIl.sllLlRlRightContentIv, new RoundedCorners(4));
         viewBinding.personalDataUserNameIl.sllLlRlRightContentTv.setVisibility(View.VISIBLE);
         viewBinding.personalDataUserNameIl.sllLlRlRightContentTv.setText(UserConfigManage.getInstance().getUserName());
+        setMemberHeadIcon();
+    }
+
+
+    /**
+     * 鏇存敼鐢ㄦ埛澶村儚;
+     */
+    private void changedUserAvatar() {
+        if (UserConfigManage.getInstance().isBAccount()) {
+            //todo B绔笉鏀寔鏇存敼鏄电О
+            HdlThreadLogic.toast(_mActivity, R.string.loading_not_supported);
+        } else {
+            cameraAlbumPopWindow = new CameraAlbumPopWindow(_mActivity, new CameraAlbumPopWindow.CameraAlbumListener() {
+                @Override
+                public void successCallBack(final File a) {
+                    //涓婁紶澶村儚鏂囦欢
+                    HDLLinkPMUser.getInstance().uploadUserHeadImage(a, new IResponseCallBack<ImageSubmitInfo>() {
+                        @Override
+                        public void onSuccess(ImageSubmitInfo imageKey) {
+                            JsonObject imageInfo = new JsonObject();
+                            imageInfo.addProperty("memberHeadIcon", imageKey.getUrl());
+                            //涓婁紶澶村儚鍦板潃
+                            HdlAccountLogic.getInstance().updateMemberHeadIcon_C(imageKey.getUrl(), new CloudCallBeak<Boolean>() {
+                                @Override
+                                public void onSuccess(Boolean obj) {
+                                    mMemberHeadIconUrl = imageKey.getUrl();
+                                    setMemberHeadIcon();
+                                }
+
+                                @Override
+                                public void onFailure(HDLException e) {
+                                    HdlLogLogic.print("uploadUserHeadImage error:" + e.getMsg());
+//                                    hideLoading();
+                                }
+                            });
+                        }
+
+                        @Override
+                        public void onFailure(HDLException error) {
+                            HdlLogLogic.print("uploadUserHeadImage error:" + error.getMsg());
+                        }
+                    });
+                }
+            });
+            cameraAlbumPopWindow.show(viewBinding.getRoot(), Gravity.BOTTOM, 0, 0);
+        }
+
     }
 
 
@@ -86,6 +195,7 @@
     private void changedNickname() {
         if (UserConfigManage.getInstance().isBAccount()) {
             //todo B绔笉鏀寔鏇存敼鏄电О
+            HdlThreadLogic.toast(_mActivity, R.string.loading_not_supported);
         } else {
             ConfirmationInputDialog confirmationInputDialog = new ConfirmationInputDialog(_mActivity);
             confirmationInputDialog.setTitle(getString(R.string.set_nickname_modification));
@@ -94,7 +204,7 @@
             confirmationInputDialog.setYesOnclickListener(new ConfirmationInputDialog.onYesOnclickListener() {
                 @Override
                 public void Confirm(String str) {
-                    HdlAccountLogic.getInstance().updateMemberInfo_C("", str, "", "", "", "", new CloudCallBeak<Boolean>() {
+                    HdlAccountLogic.getInstance().updateMemberName_C(str, new CloudCallBeak<Boolean>() {
                         @Override
                         public void onSuccess(Boolean obj) {
                             UserConfigManage.getInstance().setUserName(str);
@@ -106,7 +216,7 @@
 
                         @Override
                         public void onFailure(HDLException e) {
-                            HdlThreadLogic.tipFlashingBox(_mActivity, false, e.getMessage(), e.getCode());
+                            HdlThreadLogic.tipFlashingBox(_mActivity, false, e.getMsg(), e.getCode());
                         }
                     });
 
@@ -121,4 +231,66 @@
         }
 
     }
+
+    /**
+     * 鏄剧ず鐢ㄦ埛澶村儚
+     */
+    private void setMemberHeadIcon() {
+        GlideUtils.getRoundedCornersImage(_mActivity, mMemberHeadIconUrl, viewBinding.personalDataUserPortraitIl.sllLlRlRightContentIv, new RoundedCorners(4));
+    }
+
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (requestCode == CameraAlbumPopWindow.TAKE_PHOTO || requestCode == CameraAlbumPopWindow.SELECT_PHOTO) {
+            if (cameraAlbumPopWindow == null) {
+                return;
+            }
+            switch (requestCode) {
+                //鎵撳紑鐩告満鍚庤繑鍥�
+                case CameraAlbumPopWindow.TAKE_PHOTO:
+                    if (resultCode == RESULT_OK) {
+                        //杩欑鏂规硶鏄�氳繃鍐呭瓨鍗$殑璺緞杩涜璇诲彇鍥剧墖锛屾墍浠ョ殑鍒扮殑鍥剧墖鏄媿鎽勭殑鍘熷浘
+                        cameraAlbumPopWindow.displayImage();
+                    }
+                    break;
+                //鎵撳紑鐩稿唽鍚庤繑鍥�
+                case CameraAlbumPopWindow.SELECT_PHOTO:
+                    if (resultCode == RESULT_OK) {
+                        //鍒ゆ柇鎵嬫満绯荤粺鐗堟湰鍙�
+                        if (Build.VERSION.SDK_INT > 19) {
+                            //4.4鍙婁互涓婄郴缁熶娇鐢ㄨ繖涓柟娉曞鐞嗗浘鐗�
+                            cameraAlbumPopWindow.handleImgeOnKitKat(data);
+                        } else {
+                            cameraAlbumPopWindow.handleImageBeforeKitKat(data);
+                        }
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+    }
+
+    /**
+     * 鐗╃悊鎸夐敭杩斿洖浜嬩欢
+     */
+    @Override
+    public void onBackPressed() {
+        backPressedData();
+        super.onBackPressed();
+    }
+
+    /**
+     * 杩斿洖缁欎笂涓�绾х晫闈㈡暟鎹�
+     */
+    private void backPressedData() {
+        Intent intent = new Intent();
+        intent.putExtra("memberHeadIcon", mMemberHeadIconUrl);
+        intent.putExtra("memberName", UserConfigManage.getInstance().getUserName());
+        setResult(10, intent);
+    }
+
+
 }
\ No newline at end of file

--
Gitblit v1.8.0