wjc
2023-06-12 715b7407a765deb093b1677705b151d268e3dd4d
2023年06月12日18:56:25

备份一下代码
5个文件已添加
1个文件已删除
11个文件已修改
4 文件已重命名
1131 ■■■■■ 已修改文件
.idea/misc.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/bean/HttpResponsePack.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/config/AppConfigManage.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/config/ConstantManage.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/config/UserManagement.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/listener/BaseSuccessFailureCallBeak.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlAccountLogic.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlLogLogic.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java 320 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseInfoBean.java 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseListBean.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/LoginBean.java 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/LoginUserRegionBean.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/utils/SharedPreUtils.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/strings.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/misc.xml
@@ -1,5 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="DesignSurface">
    <option name="filePathToZoomLevelMap">
      <map>
        <entry key="app/src/main/res/layout/activity_home_login.xml" value="0.10030395136778116" />
      </map>
    </option>
  </component>
  <component name="ExternalStorageConfigurationManager" enabled="true" />
  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK" />
</project>
app/src/main/java/com/hdl/photovoltaic/bean/HttpResponsePack.java
File was renamed from app/src/main/java/com/hdl/photovoltaic/bean/ResponsePack.java
@@ -2,7 +2,7 @@
import java.io.Serializable;
public class ResponsePack implements Serializable {
public class HttpResponsePack implements Serializable {
    /**
     * 状态码
     */
app/src/main/java/com/hdl/photovoltaic/config/AppConfigManage.java
File was renamed from app/src/main/java/com/hdl/photovoltaic/config/ConfigManagement.java
@@ -2,7 +2,7 @@
import com.hdl.photovoltaic.BuildConfig;
public class ConfigManagement {
public class AppConfigManage {
    /*********是否正式服务器*********/
app/src/main/java/com/hdl/photovoltaic/config/ConstantManage.java
New file
@@ -0,0 +1,14 @@
package com.hdl.photovoltaic.config;
public class ConstantManage {
    public static final String ACCOUNT = "account";
    public static final String PASSWORD = "password";
    public static final String USERID = "userId";
    private static final String LOGIN_STATE = "login_state";
    public static final String LOGIN_TOKEN = "login_token";
    public static final String HOME_NAME = "homeName";
    public static final String REFRESH_TOKEN = "refresh_token";
    public static final String HOME_ID = "homeId";
}
app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java
New file
@@ -0,0 +1,207 @@
package com.hdl.photovoltaic.config;
import android.text.TextUtils;
import com.google.gson.Gson;
import com.hdl.photovoltaic.other.HdlFileLogic;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlResidenceLogic;
import com.hdl.photovoltaic.ui.bean.HouseListBean;
import java.util.ArrayList;
import java.util.List;
public class UserConfigManage {
    private static UserConfigManage sUserConfigManage = null;
    /**
     * 获取当前对象
     *
     * @return UserConfigManage
     */
    public static UserConfigManage getInstance() {
        if (sUserConfigManage == null) {
            sUserConfigManage = new UserConfigManage();
            sUserConfigManage.reFresh();
        }
        return sUserConfigManage;
    }
    //当前账号:刷新Token用的token(不用记录什么有效期,如果刷新失败,就踢人即可)
    private String refreshToken;
    //账户登录成功时的时间
    private long loginDateTime;
    //当前登录的帐号
    private String account;
    //添加到Token头部的东西(不要理它,只给底层使用)
    private String headerPrefix;
    //登陆账号的Guid,也是账号的userId
    private String userId;
    //当前的住宅ID
    private String homeId;
    //是否登录状态
    private boolean isLogin;
    //是否是B端账号登录
    private boolean isB;
    //住宅文件列表
    public List<String> homeFilePathList = new ArrayList<>();
    //判断当前时间点是否能够自动登录
    public boolean isAutoLogin() {
        //7天内自动登录
        return ((System.currentTimeMillis() - loginDateTime) < 7 * 24 * 60 * 60);
    }
    //是否同意隐私政策
    private boolean acceiptPolicy;
    //当前帐号的Token(这个东西不用存了)
    private String token;
    //远程连接的Mqtt的客户端ID
    public String connEmqClientId;
    //当前登录的账号是不是之前的账号
    public boolean theSameLoginAccount;
    public String getRefreshToken() {
        return refreshToken == null ? "" : refreshToken;
    }
    public void setRefreshToken(String refreshToken) {
        this.refreshToken = refreshToken;
    }
    public long getLoginDateTime() {
        return loginDateTime;
    }
    public void setLoginDateTime(long loginDateTime) {
        this.loginDateTime = loginDateTime;
    }
    public String getAccount() {
        return account == null ? "" : account;
    }
    public void setAccount(String account) {
        this.account = account;
    }
    public String getHeaderPrefix() {
        return headerPrefix == null ? "" : headerPrefix;
    }
    public void setHeaderPrefix(String headerPrefix) {
        this.headerPrefix = headerPrefix;
    }
    public String getUserId() {
        return userId == null ? "" : userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getHomeId() {
        return homeId == null ? "" : homeId;
    }
    public void setHomeId(String homeId) {
        this.homeId = homeId;
    }
    public boolean isAcceiptPolicy() {
        return acceiptPolicy;
    }
    public void setAcceiptPolicy(boolean acceiptPolicy) {
        this.acceiptPolicy = acceiptPolicy;
    }
    public String getToken() {
        return token == null ? "" : token;
    }
    public void setToken(String token) {
        this.token = token;
    }
    public boolean isLogin() {
        return isLogin;
    }
    public void setLogin(boolean login) {
        isLogin = login;
    }
    public boolean isTheSameLoginAccount() {
        return theSameLoginAccount;
    }
    public void setTheSameLoginAccount(boolean theSameLoginAccount) {
        this.theSameLoginAccount = theSameLoginAccount;
    }
    public boolean isB() {
        return isB;
    }
    public void setB(boolean b) {
        isB = b;
    }
    /**
     * 当前住宅
     */
    private HouseListBean m_Home = null;
    /**
     * 当前住宅
     */
    public HouseListBean home() {
        if (m_Home != null) {
            return m_Home;
        }
        m_Home = HdlResidenceLogic.getInstance().getHouseByHouseId(homeId);
        if (m_Home == null) {
            m_Home = new HouseListBean();
        }
        return m_Home;
    }
    /**
     * 刷新
     */
    private void reFresh() {
        String str = HdlFileLogic.getInstance().readFile(FILENAME);
        if (!TextUtils.isEmpty(str) && str.length() > 0) {
            //读取保存的数据
            Gson gson = new Gson();
            sUserConfigManage = gson.fromJson(str, UserConfigManage.class);
        }
    }
    /**
     * 保存
     */
    public void Save() {
        if (sUserConfigManage == null) {
            HdlLogLogic.print("UserConfigManage", "保存用户信息文件失败");
            return;
        }
        Gson gson = new Gson();
        String json = gson.toJson(sUserConfigManage);
        HdlFileLogic.getInstance().writeFile(FILENAME, json);
    }
    /// <summary>
    /// Config文件名
    /// </summary>
    private static final String FILENAME = "UserConfigManage.json";
}
app/src/main/java/com/hdl/photovoltaic/config/UserManagement.java
File was deleted
app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java
@@ -9,9 +9,11 @@
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.hdl.hdlhttp.utils.GsonConvert;
import com.hdl.photovoltaic.bean.ResponsePack;
import com.hdl.photovoltaic.config.ConfigManagement;
import com.hdl.photovoltaic.bean.HttpResponsePack;
import com.hdl.photovoltaic.config.AppConfigManage;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.listener.BaseSuccessFailureCallBeak;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.utils.HDLMD5Utils;
import java.io.IOException;
@@ -55,7 +57,7 @@
     * @param isExecute      是否是同步(true=同步,false=异步)
     */
    public void requestHttp(String requestUrl, String json, boolean isBasicService, boolean isExecute, BaseSuccessFailureCallBeak baseSuccessCallBeak) {
        String fullUrl = ConfigManagement.getUserRegionUrl() + requestUrl;
        String fullUrl = AppConfigManage.getUserRegionUrl() + requestUrl;
        this.requestHttps(fullUrl, json, isBasicService, isExecute, baseSuccessCallBeak);
    }
@@ -71,7 +73,6 @@
        this.requestHttps(fullUrl, json, isBasicService, isExecute, baseSuccessCallBeak);
    }
    /**
     * 请求服务器的方法
     *
@@ -85,19 +86,22 @@
            @Override
            public void run() {
                try {
                    HdlLogLogic.print("http->发送->", fullUrl + "\r\n" + json);
                    OkHttpClient okHttpClient = new OkHttpClient();
                    RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), getJson(json));
                    final Request request = new Request.Builder()
                            .url(fullUrl)//请求的url//
                            .addHeader("Authorization", "accessToken")
                            .addHeader("Authorization", UserConfigManage.getInstance().getHeaderPrefix()+UserConfigManage.getInstance().getToken())
                            .post(requestBody)
                            .build();
                    if (isExecute) {
                        Response response = okHttpClient.newCall(request).execute();//同步
                        if (response.isSuccessful()) {
                            String s = Objects.requireNonNull(response.body()).string();
                            ResponsePack responsePack = new Gson().fromJson(s, ResponsePack.class);
                            baseSuccessCallBeak.onSuccess(responsePack);
                            HttpResponsePack httpResponsePack = new Gson().fromJson(s, HttpResponsePack.class);
                            baseSuccessCallBeak.onSuccess(httpResponsePack);
                            HdlLogLogic.print("http->回复->", response.request().url()+"\r\n" + s);
                        } else {
                            //throw new IOException("Unexpected code " + response);
                            baseSuccessCallBeak.onFailure(new Exception());
@@ -109,6 +113,7 @@
                            @Override
                            public void onFailure(@NonNull Call call, @NonNull IOException e) {
                                System.out.println("失败" + e.toString());
                                HdlLogLogic.print("http->回复->", "\r\n" + e.getMessage());
                            }
                            @Override
@@ -116,8 +121,9 @@
                                System.out.println("url连接信息" + response.code());
                                if (response.code() == 200) {
                                    String s = Objects.requireNonNull(response.body()).string();
                                    ResponsePack responsePack = new Gson().fromJson(s, ResponsePack.class);
                                    baseSuccessCallBeak.onSuccess(responsePack);
                                    HttpResponsePack httpResponsePack = new Gson().fromJson(s, HttpResponsePack.class);
                                    baseSuccessCallBeak.onSuccess(httpResponsePack);
                                    HdlLogLogic.print("http->回复->", "\r\n" + s);
                                } else {
                                    baseSuccessCallBeak.onFailure(new Exception());
                                }
@@ -126,10 +132,10 @@
                    }
                } catch (Exception e) {
                    baseSuccessCallBeak.onFailure(e);
                    HdlLogLogic.print("http->回复->", "\r\n" + e.getMessage());
                }
            }
        }).start();
    }
@@ -138,8 +144,8 @@
     */
    private String getJson(String json) {
        final String timestamp = String.valueOf(System.currentTimeMillis());
        final String appKey = ConfigManagement.getAppKey();
        final String appSecret = ConfigManagement.getAppSecret();
        final String appKey = AppConfigManage.getAppKey();
        final String appSecret = AppConfigManage.getAppSecret();
        JsonObject jsonObject = new Gson().fromJson(json, JsonObject.class);
        if (jsonObject == null) {
            jsonObject = new JsonObject();
app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
@@ -24,4 +24,17 @@
    public static final String POST_UPLOAD_IMAGE_NEW = "/basis-cosmos/file/upload";
    //查询图片路径
    public static final String POST_GET_IMAGE_URL = "/home-wisdom/app/images/get_image_url";
    /*-----电站列表---------*/
    //电站列表
    public static final String POST_PowerStation_List = "/home-wisdom/app/powerStation/page";
    //电站创建
    public static final String POST_PowerStation_Create = "/home-wisdom/app/powerStation/create";
    //电站删除
    public static final String POST_PowerStation_Remove = "/home-wisdom/app/powerStation/remove";
    //电站详情
    public static final String POST_PowerStation_Info = "/home-wisdom/app/powerStation/info";
    //电站编辑
    public static final String POST_PowerStation_Edit = "/home-wisdom/app/powerStation/edit";
}
app/src/main/java/com/hdl/photovoltaic/listener/BaseSuccessFailureCallBeak.java
@@ -1,11 +1,11 @@
package com.hdl.photovoltaic.listener;
import com.hdl.photovoltaic.bean.ResponsePack;
import com.hdl.photovoltaic.bean.HttpResponsePack;
public interface BaseSuccessFailureCallBeak extends BaseFailureCallBack {
    /**
     * 成功回调
     */
    void onSuccess(ResponsePack responsePack);
    void onSuccess(HttpResponsePack httpResponsePack);
}
app/src/main/java/com/hdl/photovoltaic/other/HdlAccountLogic.java
@@ -3,10 +3,11 @@
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hdl.photovoltaic.bean.LoginBean;
import com.hdl.photovoltaic.bean.LoginUserRegionBean;
import com.hdl.photovoltaic.bean.ResponsePack;
import com.hdl.photovoltaic.config.ConfigManagement;
import com.hdl.photovoltaic.ui.bean.LoginBean;
import com.hdl.photovoltaic.ui.bean.LoginUserRegionBean;
import com.hdl.photovoltaic.bean.HttpResponsePack;
import com.hdl.photovoltaic.config.AppConfigManage;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.internet.HttpClient;
import com.hdl.photovoltaic.internet.api.HttpApi;
import com.hdl.photovoltaic.listener.BaseSuccessFailureCallBeak;
@@ -36,20 +37,20 @@
    /**
     * 初始化账号的Url区域地址(可能状态码:Success  NotAccount  NotNetWork)
     * 初始化账号的Url区域地址
     *
     * @param i_account 账号
     */
    public void regionByAccount(String i_account, CloudCallBeak<LoginUserRegionBean> cloudCallBeak) {
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("account", i_account);
        String full = ConfigManagement.getAPPRegionUrl() + HttpApi.POST_RegionByUserAccount;
        String full = AppConfigManage.getAPPRegionUrl() + HttpApi.POST_RegionByUserAccount;
        HttpClient.getInstance().requestFullHttp(full, jsonObject.toString(), true, true, new BaseSuccessFailureCallBeak() {
            @Override
            public void onSuccess(ResponsePack responsePack) {
                if (responsePack.getData() != null) {
            public void onSuccess(HttpResponsePack httpResponsePack) {
                if (httpResponsePack.getData() != null) {
                    Gson gson = new Gson();
                    String json = gson.toJson(responsePack.getData());
                    String json = gson.toJson(httpResponsePack.getData());
                    LoginUserRegionBean loginUserRegionBean = new Gson().fromJson(json, LoginUserRegionBean.class);
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(loginUserRegionBean);
@@ -86,11 +87,12 @@
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() {
            @Override
            public void onSuccess(ResponsePack responsePack) {
                if (responsePack.getData() != null) {
            public void onSuccess(HttpResponsePack httpResponsePack) {
                if (httpResponsePack.getData() != null) {
                    Gson gson = new Gson();
                    String json = gson.toJson(responsePack.getData());
                    String json = gson.toJson(httpResponsePack.getData());
                    LoginBean loginBean = new Gson().fromJson(json, LoginBean.class);
                    saveUserData(loginBean);
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(loginBean);
                    } else {
@@ -120,5 +122,23 @@
        return mailbox.matches(regex);
    }
    /**
     * 登录成功保存
     */
    private void saveUserData(LoginBean obj) {
        if (obj != null) {
            UserConfigManage.getInstance().setLogin(true);
            UserConfigManage.getInstance().setAcceiptPolicy(true);
            UserConfigManage.getInstance().setLoginDateTime(System.currentTimeMillis());
            UserConfigManage.getInstance().setUserId(obj.getUserId());
            UserConfigManage.getInstance().setAccount(obj.getAccount());
            UserConfigManage.getInstance().setToken(obj.getAccessToken());
            UserConfigManage.getInstance().setHeaderPrefix(obj.getHeaderPrefix());
            UserConfigManage.getInstance().setRefreshToken(obj.getRefreshToken());
            boolean isUserId = UserConfigManage.getInstance().getUserId().equals(obj.getUserId());
            UserConfigManage.getInstance().setTheSameLoginAccount(isUserId);
        }
    }
}
app/src/main/java/com/hdl/photovoltaic/other/HdlLogLogic.java
@@ -27,4 +27,5 @@
}
app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java
New file
@@ -0,0 +1,320 @@
package com.hdl.photovoltaic.other;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hdl.photovoltaic.bean.HttpResponsePack;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.internet.HttpClient;
import com.hdl.photovoltaic.internet.api.HttpApi;
import com.hdl.photovoltaic.listener.BaseSuccessFailureCallBeak;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.ui.bean.HouseInfoBean;
import com.hdl.photovoltaic.ui.bean.HouseListBean;
import java.util.ArrayList;
import java.util.List;
public class HdlResidenceLogic {
    private static volatile HdlResidenceLogic sHdlResidenceLogic;
    public static synchronized HdlResidenceLogic getInstance() {
        if (sHdlResidenceLogic == null) {
            synchronized (HdlResidenceLogic.class) {
                if (sHdlResidenceLogic == null) {
                    sHdlResidenceLogic = new HdlResidenceLogic();
                }
            }
        }
        return sHdlResidenceLogic;
    }
    public List<HouseInfoBean> getHouseInfoList() {
        return houseInfoList;
    }
    public void setHouseInfoList(List<HouseInfoBean> houseInfoList) {
        this.houseInfoList = houseInfoList;
    }
    public List<HouseListBean> getHouseInfoBeanList() {
        return houseList;
    }
    public void setHouseInfoBeanList(List<HouseListBean> houseListBeanList) {
        this.houseList = houseListBeanList;
    }
    //住宅列表
    private List<HouseListBean> houseList = new ArrayList<>();
    //住宅详情列表
    private List<HouseInfoBean> houseInfoList = new ArrayList<>();
    public HouseListBean getHouseByHouseId(String homeId) {
        return new HouseListBean();
    }
    /**
     * 获取住宅(电站)列表
     *
     * @param pageNo   当前页数
     * @param pageSize 一页大小
     */
    public void getResidenceList(int pageNo, int pageSize, CloudCallBeak<Boolean> cloudCallBeak) {
        if (pageNo == 1) {
            //第一次进来清空列表
            houseList.clear();
        }
        String requestUrl = HttpApi.POST_PowerStation_List;
        JsonObject json = new JsonObject();
//        json.addProperty("powerSort", "descending");//发电功率排序(descending:降序ascending:升序)
//        json.addProperty("todayElectricitySort", "descending");//今日发电量排序
//        json.addProperty("createTimeSort", "descending");//创建时间排序
//        json.addProperty("zoneType", "password");//区域
        json.addProperty("pageNo", pageNo);//页码
        json.addProperty("pageSize", pageSize);//页数
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() {
            @Override
            public void onSuccess(HttpResponsePack httpResponsePack) {
                if (httpResponsePack != null) {
                    if (httpResponsePack.getData() != null) {
                        Gson gson = new Gson();
                        String jsonStr = gson.toJson(httpResponsePack.getData().toString());
                        HouseInfoBeanClass houseInfoBeanClass = gson.fromJson(jsonStr, HouseInfoBeanClass.class);
                        houseList.addAll(houseInfoBeanClass.getList());
                        //总共有多少页
                        long totalPage = houseInfoBeanClass.totalPage;
                        if (totalPage == houseInfoBeanClass.getPageNo()) {
                            cloudCallBeak.onSuccess(true);
                            return;
                        }
                        getResidenceList(pageNo + 1, 100, cloudCallBeak);
                    } else {
                        cloudCallBeak.onSuccess(false);
                    }
                }
            }
            @Override
            public void onFailure(Exception exception) {
                cloudCallBeak.onFailure(exception);
            }
        });
    }
    /**
     * 获取住宅(电站)详情
     *
     * @param homeId        住宅id
     * @param cloudCallBeak 回调
     */
    public void getResidenceInfo(String homeId, CloudCallBeak<HouseInfoBean> cloudCallBeak) {
        String requestUrl = HttpApi.POST_GET_MEMBER_INFO;
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);//电站id
        //json.addProperty("zoneType", "password");//区域
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() {
            @Override
            public void onSuccess(HttpResponsePack httpResponsePack) {
                if (httpResponsePack != null) {
                    if (httpResponsePack.getData() != null) {
                        Gson gson = new Gson();
                        String jsonStr = gson.toJson(httpResponsePack.getData().toString());
                        HouseInfoBean houseInfoBean = gson.fromJson(jsonStr, HouseInfoBean.class);
                        cloudCallBeak.onSuccess(houseInfoBean);
                    } else {
                        cloudCallBeak.onSuccess(null);
                    }
                }
            }
            @Override
            public void onFailure(Exception exception) {
                cloudCallBeak.onFailure(exception);
            }
        });
    }
    /**
     * 编辑住宅(电站)
     *
     * @param houseInfoBean -
     * @param cloudCallBeak -
     */
    public void editResidence(HouseInfoBean houseInfoBean, CloudCallBeak<Boolean> cloudCallBeak) {
        String requestUrl = HttpApi.POST_PowerStation_Create;
        JsonObject json = new JsonObject();
        JsonObject location = new JsonObject();
        json.addProperty("homeId", houseInfoBean.getHomeId());
        location.addProperty("nationCode", houseInfoBean.getLocation().getNationCode());
        location.addProperty("nationName", houseInfoBean.getLocation().getNationName());
        location.addProperty("provinceCode", houseInfoBean.getLocation().getProvinceCode());
        location.addProperty("provinceName", houseInfoBean.getLocation().getProvinceName());
        location.addProperty("cityCode", houseInfoBean.getLocation().getCityCode());
        location.addProperty("cityName", houseInfoBean.getLocation().getCityName());
        json.add("location", location);
        json.addProperty("address", houseInfoBean.getAddress());
        json.addProperty("latitude", houseInfoBean.getLatitude());
        json.addProperty("longitude", houseInfoBean.getLongitude());
        json.addProperty("homeName", houseInfoBean.getHomeName());
        json.addProperty("timezone", houseInfoBean.getTimezone());
        json.addProperty("powerStationType", houseInfoBean.getPowerStationType());
        json.addProperty("workMode", houseInfoBean.getWorkMode());
        json.addProperty("installedCapacity", houseInfoBean.getInstalledCapacity());
        json.addProperty("productionTime", houseInfoBean.getProductionTime());
        json.addProperty("monetaryUnit", houseInfoBean.getMonetaryUnit());
        json.addProperty("electrovalence", houseInfoBean.getElectrovalence());
        json.addProperty("totalCost", houseInfoBean.getTotalCost());
        json.addProperty("zoneType", houseInfoBean.getZoneType());
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() {
            @Override
            public void onSuccess(HttpResponsePack httpResponsePack) {
                cloudCallBeak.onSuccess(true);
            }
            @Override
            public void onFailure(Exception exception) {
                cloudCallBeak.onFailure(exception);
            }
        });
    }
    /**
     * 删除住宅(电站)
     *
     * @param homeId        -
     * @param cloudCallBeak -
     */
    public void delResidence(String homeId, CloudCallBeak<Boolean> cloudCallBeak) {
        String requestUrl = HttpApi.POST_PowerStation_Remove;
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);//电站id
        //json.addProperty("zoneType", "password");//区域
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() {
            @Override
            public void onSuccess(HttpResponsePack httpResponsePack) {
                cloudCallBeak.onSuccess(true);
            }
            @Override
            public void onFailure(Exception exception) {
                cloudCallBeak.onFailure(exception);
            }
        });
    }
    /**
     * 添加住宅(电站)
     *
     * @param houseInfoBean -
     * @param cloudCallBeak -
     */
    public void addResidence(HouseInfoBean houseInfoBean, CloudCallBeak<Boolean> cloudCallBeak) {
        String requestUrl = HttpApi.POST_PowerStation_Create;
        JsonObject json = new JsonObject();
        JsonObject location = new JsonObject();
        json.addProperty("powerStationImage", "");
        location.addProperty("nationCode", houseInfoBean.getLocation().getNationCode());
        location.addProperty("nationName", houseInfoBean.getLocation().getNationName());
        location.addProperty("provinceCode", houseInfoBean.getLocation().getProvinceCode());
        location.addProperty("provinceName", houseInfoBean.getLocation().getProvinceName());
        location.addProperty("cityCode", houseInfoBean.getLocation().getCityCode());
        location.addProperty("cityName", houseInfoBean.getLocation().getCityName());
        json.add("location", location);
        json.addProperty("address", houseInfoBean.getAddress());
        json.addProperty("latitude", houseInfoBean.getLatitude());
        json.addProperty("longitude", houseInfoBean.getLongitude());
        json.addProperty("homeName", houseInfoBean.getHomeName());
        json.addProperty("timezone", houseInfoBean.getTimezone());
        json.addProperty("powerStationType", houseInfoBean.getPowerStationType());
        json.addProperty("workMode", houseInfoBean.getWorkMode());
        json.addProperty("installedCapacity", houseInfoBean.getInstalledCapacity());
        json.addProperty("productionTime", houseInfoBean.getProductionTime());
        json.addProperty("monetaryUnit", houseInfoBean.getMonetaryUnit());
        json.addProperty("electrovalence", houseInfoBean.getElectrovalence());
        json.addProperty("totalCost", houseInfoBean.getTotalCost());
        json.addProperty("zoneType", houseInfoBean.getZoneType());
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() {
            @Override
            public void onSuccess(HttpResponsePack httpResponsePack) {
                cloudCallBeak.onSuccess(true);
            }
            @Override
            public void onFailure(Exception exception) {
                cloudCallBeak.onFailure(exception);
            }
        });
    }
    static class HouseInfoBeanClass {
        //总条数
        private long totalCount;
        //总页数
        private long totalPage;
        //当前页
        private long pageNo;
        //页数
        private long pageSize;
        //电站列表
        private List<HouseListBean> list;
        public long getTotalCount() {
            return totalCount;
        }
        public void setTotalCount(long totalCount) {
            this.totalCount = totalCount;
        }
        public long getTotalPage() {
            return totalPage;
        }
        public void setTotalPage(long totalPage) {
            this.totalPage = totalPage;
        }
        public long getPageNo() {
            return pageNo;
        }
        public void setPageNo(long pageNo) {
            this.pageNo = pageNo;
        }
        public long getPageSize() {
            return pageSize;
        }
        public void setPageSize(long pageSize) {
            this.pageSize = pageSize;
        }
        public List<HouseListBean> getList() {
            return list == null ? new ArrayList<>() : list;
        }
        public void setList(List<HouseListBean> list) {
            this.list = list;
        }
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
@@ -19,11 +19,14 @@
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.bean.LoginUserRegionBean;
import com.hdl.photovoltaic.config.ConfigManagement;
import com.hdl.photovoltaic.other.HdlResidenceLogic;
import com.hdl.photovoltaic.ui.bean.LoginBean;
import com.hdl.photovoltaic.ui.bean.LoginUserRegionBean;
import com.hdl.photovoltaic.config.AppConfigManage;
import com.hdl.photovoltaic.databinding.ActivityHomeLoginBinding;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlAccountLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
public class HomeLoginActivity extends CustomBaseActivity {
@@ -48,6 +51,10 @@
    private void initView() {
        setStringDifferentColors(viewBinding.homeLoginPrivacyTv);
        //测试用
        viewBinding.homeLoginAccountEt.setText("18402017839");
        viewBinding.homeLoginPasswordEt.setText("123456");
        isLoginTextViewEnabled();
    }
    private void initEvent() {
@@ -139,7 +146,10 @@
        viewBinding.homeLoginTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                boolean isLogin = isLocalCheckAccountAndPassword();
                String account = viewBinding.homeLoginAccountEt.getText().toString().replace(" ", "");
                String password = viewBinding.homeLoginPasswordEt.getText().toString().replace(" ", "");
                boolean isLogin = isLocalCheckAccountAndPassword(account, password);
                if (!isLogin) {
                    return;
                }
@@ -148,9 +158,49 @@
//                    //隐私协议提示
//                    return;
//                }
                restoreButtonStyleToInitializeState();
                showLoading(getString(R.string.home_login_登录中));
                HdlAccountLogic.getInstance().regionByAccount(account, new CloudCallBeak<LoginUserRegionBean>() {
                    @Override
                    public void onSuccess(LoginUserRegionBean obj) {
                        AppConfigManage.setUserRegionUrl(obj.getRegionUrl());
                        HdlAccountLogic.getInstance().loginByPassword(account, password, new CloudCallBeak<LoginBean>() {
                            @Override
                            public void onSuccess(LoginBean obj) {
                                HdlThreadLogic.runMainThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        HdlResidenceLogic.getInstance().getResidenceList(1, 100, new CloudCallBeak<Boolean>() {
                                            @Override
                                            public void onSuccess(Boolean obj) {
                                            }
                                            @Override
                                            public void onFailure(Exception exception) {
                                            }
                                        });
                                        hideLoading();
                                        restoreButtonStyleToInitializeState();
                startActivity(MyPowerStationActivity.class);
                                    }
                                }, null, null);
                            }
                            @Override
                            public void onFailure(Exception exception) {
                                hideLoading();
                            }
                        });
                    }
                    @Override
                    public void onFailure(Exception exception) {
                        hideLoading();
                    }
                });
            }
@@ -159,19 +209,7 @@
        viewBinding.homeLoginExperienceTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                startActivity(MyPowerStationActivity.class);
                HdlAccountLogic.getInstance().regionByAccount("18402017839", new CloudCallBeak<LoginUserRegionBean>() {
                    @Override
                    public void onSuccess(LoginUserRegionBean obj) {
                        ConfigManagement.setUserRegionUrl(obj.getRegionUrl());
                    }
                    @Override
                    public void onFailure(Exception exception) {
                    }
                });
                startActivity(MyPowerStationActivity.class);
            }
        });
@@ -189,12 +227,13 @@
    /**
     * 本地校验输入账号或者密码是否正确
     *
     * @param account  账号
     * @param password 密码
     * 正确返回<true>true</true>
     * 一般方法
     */
    private boolean isLocalCheckAccountAndPassword() {
        String account = viewBinding.homeLoginAccountEt.getText().toString().replace(" ", "");
        String password = viewBinding.homeLoginPasswordEt.getText().toString().replace(" ", "");
    private boolean isLocalCheckAccountAndPassword(String account, String password) {
        if (TextUtils.isEmpty(account)) {
            viewBinding.homeLoginLine1V.setBackgroundColor(getColor(R.color.text_D34545));
            viewBinding.homeLoginAccountTextErrorTv.setText(R.string.home_login_error_账号不能为空);
app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java
@@ -10,15 +10,15 @@
import androidx.recyclerview.widget.RecyclerView;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.ui.bean.HouseInfoBean;
import com.hdl.photovoltaic.ui.bean.HouseListBean;
import java.util.List;
public class HouseInfoAdapter extends RecyclerView.Adapter<HouseInfoAdapter.MyViewHolder> {
    private List<HouseInfoBean> mList;
    private List<HouseListBean> mList;
    public HouseInfoAdapter(List<HouseInfoBean> list) {
    public HouseInfoAdapter(List<HouseListBean> list) {
        this.mList = list;
    }
@@ -31,8 +31,8 @@
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        HouseInfoBean houseInfoBean = this.mList.get(position);
        holder.homeNameTv.setText(houseInfoBean.getName());
        HouseListBean houseListBean = this.mList.get(position);
        holder.homeNameTv.setText(houseListBean.getHomeName());
    }
@@ -42,7 +42,7 @@
    }
    public void setList(List<HouseInfoBean> list) {
    public void setList(List<HouseListBean> list) {
        this.mList = list;
    }
app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseInfoBean.java
@@ -1,17 +1,199 @@
package com.hdl.photovoltaic.ui.bean;
import java.io.Serializable;
public class HouseInfoBean implements Serializable {
public class HouseInfoBean {
    private String homeId;//电站id
    private Location location;//电站地址
    private String address;//详细地址
    private String latitude;//纬度
    private String longitude;//经度
    private String homeName;//电站名称
    private String timezone;//时区
    private int powerStationType;//电站类型(DOMESTIC_ROOF:家用屋顶,COMMERCIAL_ROOF:商业用屋顶,INDUSTRIAL_ROOF:工业用屋顶,SURFACE_POWER_STATION:地面电站)
    private int workMode;//工作模式(self_use:自发自用,peak_load_shifting:削峰填谷,battery_priority:电池优先,auto:智能模式)
    private String installedCapacity;//装机容量
    private long productionTime;//投产日志
    private String monetaryUnit;//货币单位
    private String electrovalence;//电价
    private String totalCost;//总成本
    private String name;
    private String zoneType;//区域
    public String getName() {
        return name;
    public String getHomeId() {
        return homeId == null ? "" : homeId;
    }
    public void setName(String name) {
        this.name = name;
    public void setHomeId(String homeId) {
        this.homeId = homeId;
    }
    public Location getLocation() {
        return location == null ? new Location() : location;
    }
    public void setLocation(Location location) {
        this.location = location;
    }
    public String getAddress() {
        return address == null ? "" : address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getLatitude() {
        return latitude == null ? "" : latitude;
    }
    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }
    public String getLongitude() {
        return longitude == null ? "" : longitude;
    }
    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }
    public String getHomeName() {
        return homeName == null ? "" : homeName;
    }
    public void setHomeName(String homeName) {
        this.homeName = homeName;
    }
    public String getTimezone() {
        return timezone == null ? "" : timezone;
    }
    public void setTimezone(String timezone) {
        this.timezone = timezone;
    }
    public int getPowerStationType() {
        return powerStationType;
    }
    public void setPowerStationType(int powerStationType) {
        this.powerStationType = powerStationType;
    }
    public int getWorkMode() {
        return workMode;
    }
    public void setWorkMode(int workMode) {
        this.workMode = workMode;
    }
    public String getInstalledCapacity() {
        return installedCapacity == null ? "" : installedCapacity;
    }
    public void setInstalledCapacity(String installedCapacity) {
        this.installedCapacity = installedCapacity;
    }
    public long getProductionTime() {
        return productionTime;
    }
    public void setProductionTime(long productionTime) {
        this.productionTime = productionTime;
    }
    public String getMonetaryUnit() {
        return monetaryUnit == null ? "" : monetaryUnit;
    }
    public void setMonetaryUnit(String monetaryUnit) {
        this.monetaryUnit = monetaryUnit;
    }
    public String getElectrovalence() {
        return electrovalence == null ? "" : electrovalence;
    }
    public void setElectrovalence(String electrovalence) {
        this.electrovalence = electrovalence;
    }
    public String getTotalCost() {
        return totalCost == null ? "" : totalCost;
    }
    public void setTotalCost(String totalCost) {
        this.totalCost = totalCost;
    }
    public String getZoneType() {
        return zoneType == null ? "" : zoneType;
    }
    public void setZoneType(String zoneType) {
        this.zoneType = zoneType;
    }
    public static class Location {
        private String nationCode;//国家编码
        private String nationName;//国家名称
        private String provinceCode;//省编码
        private String provinceName;//省名称
        private String cityCode;//是编码
        private String cityName;//是名称
        public String getNationCode() {
            return nationCode == null ? "" : nationCode;
        }
        public void setNationCode(String nationCode) {
            this.nationCode = nationCode;
        }
        public String getNationName() {
            return nationName == null ? "" : nationName;
        }
        public void setNationName(String nationName) {
            this.nationName = nationName;
        }
        public String getProvinceCode() {
            return provinceCode == null ? "" : provinceCode;
        }
        public void setProvinceCode(String provinceCode) {
            this.provinceCode = provinceCode;
        }
        public String getCityCode() {
            return cityCode == null ? "" : cityCode;
        }
        public void setCityCode(String cityCode) {
            this.cityCode = cityCode;
        }
        public String getCityName() {
            return cityName == null ? "" : cityName;
        }
        public void setCityName(String cityName) {
            this.cityName = cityName;
        }
        public String getProvinceName() {
            return provinceName == null ? "" : provinceName;
        }
        public void setProvinceName(String provinceName) {
            this.provinceName = provinceName;
        }
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseListBean.java
New file
@@ -0,0 +1,70 @@
package com.hdl.photovoltaic.ui.bean;
import java.io.Serializable;
public class HouseListBean implements Serializable {
    private String homeId;//电站id
    private String homeImage;//电站图片
    private String homeName;//电站名称
    private String installedCapacity;//装机容量
    private String power;//发电功率
    private String todayElectricity;//今天发电量
    private int powerStationStatus;//电站状态(电站状态    1:正常(运行),2:离线,3:连接中,4:故障)
    public String getHomeId() {
        return homeId == null ? "" : homeId;
    }
    public void setHomeId(String homeId) {
        this.homeId = homeId;
    }
    public String getHomeImage() {
        return homeImage == null ? "" : homeImage;
    }
    public void setHomeImage(String homeImage) {
        this.homeImage = homeImage;
    }
    public String getHomeName() {
        return homeName == null ? "" : homeName;
    }
    public void setHomeName(String homeName) {
        this.homeName = homeName;
    }
    public String getInstalledCapacity() {
        return installedCapacity == null ? "" : installedCapacity;
    }
    public void setInstalledCapacity(String installedCapacity) {
        this.installedCapacity = installedCapacity;
    }
    public String getPower() {
        return power == null ? "" : power;
    }
    public void setPower(String power) {
        this.power = power;
    }
    public String getTodayElectricity() {
        return todayElectricity == null ? "" : todayElectricity;
    }
    public void setTodayElectricity(String todayElectricity) {
        this.todayElectricity = todayElectricity;
    }
    public int getPowerStationStatus() {
        return powerStationStatus;
    }
    public void setPowerStationStatus(int powerStationStatus) {
        this.powerStationStatus = powerStationStatus;
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/bean/LoginBean.java
File was renamed from app/src/main/java/com/hdl/photovoltaic/bean/LoginBean.java
@@ -1,4 +1,4 @@
package com.hdl.photovoltaic.bean;
package com.hdl.photovoltaic.ui.bean;
import androidx.annotation.NonNull;
@@ -7,29 +7,59 @@
public class LoginBean implements Serializable {
    /// 用户有效身份Token
    private String accessToken;
    /// 用户有效身份Token过期时间
    private String expiration;
    /// 刷新Token
    private String refreshToken;
    /// 刷新Token过期时间
    private String refreshExpiration;
    /// 用户唯一ID
    private String userId;
    /// 登录帐号
    private String account;
    /// headerPrefix
    private String headerPrefix;
    private String tokenUuid;
    private String tokenType;
    ///小区ID
    private String companyId;
    /// 用户有效身份Token过期时间
    private String expiration;
    ///过期时间(秒)
    private String expiresIn;
    private String refreshExpiresIn;
    private String userType;
    /// 认证请求头前缀
    private String headerPrefix;
    //用户姓名
    private String name;
    /// 刷新Token过期时间
    private String refreshExpiration;
    ///
    private String refreshExpiresIn;
    /// 刷新Token
    private String refreshToken;
    ///角色
    private String role;
    ///租户ID
    private String tenantId;
    ///
    private String tokenType;
    private String tokenUuid;
    /// 用户id
    private String userId;
    ///手机号
    private String userPhone;
    ///用户类型
    private String userType;
    /// 用户邮箱
    private String userEmail;
    ///企业单位id
    private String companyId;
    public String getRole() {
        return this.role == null ? "" : role;
    }
    public void setRole(String role) {
        this.role = role;
    }
    public String getTenantId() {
        return tenantId == null ? "" : tenantId;
    }
    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }
    @NonNull
    public String getAccessToken() {
app/src/main/java/com/hdl/photovoltaic/ui/bean/LoginUserRegionBean.java
File was renamed from app/src/main/java/com/hdl/photovoltaic/bean/LoginUserRegionBean.java
@@ -1,4 +1,4 @@
package com.hdl.photovoltaic.bean;
package com.hdl.photovoltaic.ui.bean;
import androidx.annotation.NonNull;
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
@@ -14,9 +14,8 @@
import com.hdl.photovoltaic.databinding.FragmentHouseListBinding;
import com.hdl.photovoltaic.base.CustomBaseFragment;
import com.hdl.photovoltaic.ui.adapter.HouseInfoAdapter;
import com.hdl.photovoltaic.ui.bean.HouseInfoBean;
import com.hdl.photovoltaic.ui.bean.HouseListBean;
import com.hdl.photovoltaic.ui.device.FastScanActivity;
import com.hdl.photovoltaic.utils.FlashLightUtils;
import java.util.ArrayList;
import java.util.List;
@@ -26,7 +25,7 @@
    private HouseInfoAdapter houseInfoAdapter;
    private CameraManager manager;
    private List<HouseInfoBean> houseInfoBeanList = null;
    private List<HouseListBean> houseListBeanList = null;
    @Override
    public Object getContentView() {
@@ -74,7 +73,7 @@
        viewBinding.toolbarTopFragmentHouseListRl.topMoreIv.setVisibility(View.VISIBLE);
        viewBinding.toolbarTopFragmentHouseListRl.topMoreIv.setImageResource(R.drawable.add);
        LinearLayoutManager linearLayout = new LinearLayoutManager(_mActivity);
        houseInfoAdapter = new HouseInfoAdapter(this.houseInfoBeanList);
        houseInfoAdapter = new HouseInfoAdapter(this.houseListBeanList);
        viewBinding.fragmentHouseSrlListRc.setLayoutManager(linearLayout);
        viewBinding.fragmentHouseSrlListRc.setAdapter(houseInfoAdapter);
@@ -82,11 +81,11 @@
    }
    private void initData() {
        this.houseInfoBeanList = new ArrayList<>();
        this.houseListBeanList = new ArrayList<>();
        for (int i = 0; i < 11; i++) {
            HouseInfoBean houseInfoBean = new HouseInfoBean();
            houseInfoBean.setName("电站" + i);
            this.houseInfoBeanList.add(houseInfoBean);
            HouseListBean houseListBean = new HouseListBean();
            houseListBean.setHomeName("电站" + i);
            this.houseListBeanList.add(houseListBean);
        }
app/src/main/java/com/hdl/photovoltaic/utils/SharedPreUtils.java
New file
@@ -0,0 +1,41 @@
package com.hdl.photovoltaic.utils;
import android.content.Context;
import android.content.SharedPreferences;
public class SharedPreUtils {
    /**
     * 用户数据的存储
     *
     * @param key     键名
     * @param value   键值
     * @param context 上下文
     * @return -
     */
    public static boolean saveMyDataInfo(String key, String value, Context context) {
        // 获取SharedPreferences对象,同时指定文件名称和访问权限
        SharedPreferences sp = context.getSharedPreferences("MyData", Context.MODE_PRIVATE);
        // 获取获取SharedPreferences的编辑器对象
        SharedPreferences.Editor edit = sp.edit();
        // 通过编辑器进行数据的存储
        edit.putString(key, value);
        edit.apply();
        return true;
    }
    /**
     * 读取用户数据
     *
     * @param key     键名
     * @param context 上下文
     * @return -value
     */
    public String getSharedPreferencesKey(String key, Context context) {
        // 获取SharedPreferences对象,同时指定文件名称和访问权限
        SharedPreferences sp = context.getSharedPreferences("MyData", Context.MODE_PRIVATE);
        return sp.getString(key, "");
    }
}
app/src/main/res/values/strings.xml
@@ -21,6 +21,7 @@
    <string name="home_login_注册">注册</string>
    <string name="home_login_忘记密码">忘记密码</string>
    <string name="home_login_登录">登录</string>
    <string name="home_login_登录中">登录中...</string>
    <string name="home_login_体验电站">体验电站</string>
    <string name="home_login_同意_服务协议">同意《服务协议》和《用户信息保护规定》</string>
    <string name="home_login_error_账号不能为空">账号不能为空.</string>