UserService.java
6.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
package com.cnlive.gundam.user.auth;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.Context;
import com.cnlive.gundam.R;
import com.cnlive.gundam.user.model.User;
import com.cnlive.libs.user.model.DataEntity;
import com.cnlive.libs.util.SharedPreferencesHelper;
/**
* 用户管理类
*/
public class UserService {
private final String KEY_DEFAULT_ACCOUNT = "defaultaccount";//用户默认账户
private final String KEY_USER_DATA_USER_ID = "uid"; //用户uid
private final String KEY_USER_DATA_NICKNAME = "nickname"; //用户昵称
private final String KEY_USER_DATA_FACEURL = "faceurl"; //用户头像
private final String KEY_USER_DATA_GENDER = "gender"; //用户性别
private final String KEY_USER_DATA_MOBILE = "mobile"; //用户手机号
private final String KEY_USER_DATA_EMAIL = "email"; //用户邮箱
private final String KEY_USER_DATA_LOCATION = "location"; //用户地址
private final String KEY_USER_TOKEN = "token"; //用户token
private Context mContext;
private SharedPreferencesHelper sharedPrefs;
public static UserService mInstance;
private AccountManager mAccountManager;
private Account activeAccount;
private UserService(Context context) {
mContext = context;
sharedPrefs = SharedPreferencesHelper.getInstance(context);
mAccountManager = AccountManager.get(context);
getDefaultAccount();
//AppApplication.userID=getActiveAccountInfo().getUid();
}
public static synchronized UserService getInstance(Context context) {
if (mInstance == null)
mInstance = new UserService(context.getApplicationContext());
return mInstance;
}
private boolean hasDefaultAccount() {
return getDefaultAccount() != null;
}
private Account getDefaultAccount() {
String accountName = sharedPrefs.getValue(KEY_DEFAULT_ACCOUNT);
return activeAccount = findAccountByUsername(accountName);
}
private void setDefaultAccount(Account defaultAccount) {
sharedPrefs.setValue(KEY_DEFAULT_ACCOUNT, defaultAccount.name);
boolean foundAccount = false;
Account[] accounts = mAccountManager.getAccounts();
for (int i = 0; i < accounts.length && !foundAccount; i++) {
if (accounts[i].name.equals(defaultAccount.name)) {
foundAccount = true;
}
}
if (!foundAccount) {
// 默认账户被注销了?
}
}
public User getActiveAccountInfo() {
if (hasDefaultAccount())
return getUserInfo(activeAccount);
else
return new User();
}
private Account setActiveAccount(String username, String password) {
Account account = findAccountByUsername(username);
if (account == null) {
account = new Account(username, mContext.getString(R.string.ACCOUNT_TYPE));
mAccountManager.addAccountExplicitly(account, password, null);
}
this.activeAccount = account;
return account;
}
public boolean autoLogin(String username, String password, DataEntity user) {
if (user == null) {
return false;
}
Account account = setActiveAccount(username, password);
setDefaultAccount(account);
setUserInfo(account, user);
return true;
}
public void updateNickName(String nickname){ //修改昵称
mAccountManager.setUserData(activeAccount,KEY_USER_DATA_NICKNAME, nickname);
}
public void updateFaceUrl(String faceurl){ //修改头像
mAccountManager.setUserData(activeAccount, KEY_USER_DATA_FACEURL, faceurl);
}
public void updateGender(String gender){ //修改性别
mAccountManager.setUserData(activeAccount,KEY_USER_DATA_GENDER, gender);
}
public void updateEmail(String email){ //修改邮箱
mAccountManager.setUserData(activeAccount,KEY_USER_DATA_EMAIL, email);
}
public void setActiveAccountInfo( DataEntity user) {//更新 保存用户信息
setUserInfo(activeAccount, user);
}
public void setUserInfo(Account account, DataEntity user){//更新 保存用户信息
mAccountManager.setUserData(account,KEY_USER_DATA_USER_ID, String.valueOf(user.getUid()));
mAccountManager.setUserData(account,KEY_USER_DATA_NICKNAME, user.getNickName());
mAccountManager.setUserData(account,KEY_USER_DATA_FACEURL, user.getFaceUrl());
mAccountManager.setUserData(account,KEY_USER_DATA_GENDER, user.getGender());
mAccountManager.setUserData(account,KEY_USER_DATA_MOBILE, user.getMobile());
mAccountManager.setUserData(account,KEY_USER_DATA_EMAIL, user.getEmail());
mAccountManager.setUserData(account,KEY_USER_DATA_LOCATION, user.getLocation());
mAccountManager.setUserData(account,KEY_USER_TOKEN, user.getToken());
}
public User getUserInfo(Account account){//获取用户信息
User user = new User();
user.setUid(Integer.parseInt(mAccountManager.getUserData(account, KEY_USER_DATA_USER_ID)));
user.setNickname(mAccountManager.getUserData(account, KEY_USER_DATA_NICKNAME));
user.setFaceurl(mAccountManager.getUserData(account, KEY_USER_DATA_FACEURL));
user.setGender(mAccountManager.getUserData(account, KEY_USER_DATA_GENDER));
user.setMobile(mAccountManager.getUserData(account, KEY_USER_DATA_MOBILE));
user.setEmail(mAccountManager.getUserData(account, KEY_USER_DATA_EMAIL));
user.setLocation(mAccountManager.getUserData(account, KEY_USER_DATA_LOCATION));
user.setToken(mAccountManager.getUserData(account,KEY_USER_TOKEN));
return user;
}
private Account findAccountByUsername(String username) {
if (username.length() > 0) {
for (Account account : mAccountManager.getAccountsByType(mContext.getString(R.string.ACCOUNT_TYPE))) {
if (account.name.equals(username)) {
return account;
}
}
}
//AppApplication.userID = 0;
return null;
}
public void clearUser(){//清空用户信息/退出登录
Account account = getDefaultAccount();
if (account != null) {
mAccountManager.removeAccount(account, null, null);
sharedPrefs.remove(KEY_DEFAULT_ACCOUNT);
activeAccount = null;
}
}
}