Commit bb77bac92b30e88ac2e77fb2d74aa5d6c2cdd2e2

Authored by 王琳
1 parent f134c235

更新用户sdk的jar包和demo

app/libs/libcnliveuser.jar
No preview for this file type
app/libs/libcnliveutil.jar
No preview for this file type
app/src/main/java/com/cnlive/libs/BaseActivity.java
@@ -2,45 +2,17 @@ package com.cnlive.libs; @@ -2,45 +2,17 @@ package com.cnlive.libs;
2 2
3 import android.os.Bundle; 3 import android.os.Bundle;
4 import android.support.v7.app.AppCompatActivity; 4 import android.support.v7.app.AppCompatActivity;
5 -import android.util.Log;  
6 5
7 -import com.cnlive.libs.user.CNLiveUser;  
8 -import com.cnlive.libs.user.CNUserCallBack;  
9 -import com.cnlive.libs.user.model.CNUserBuilder;  
10 -import com.cnlive.libs.user.model.UserState; 6 +import com.cnlive.libs.user.model.UserData;
11 7
12 /** 8 /**
13 * Created by Administrator on 2016/9/22. 9 * Created by Administrator on 2016/9/22.
14 */ 10 */
15 public class BaseActivity extends AppCompatActivity { 11 public class BaseActivity extends AppCompatActivity {
16 -  
17 - public CNLiveUser cnLiveUser;  
18 - public CNUserCallBack cnUserCallBack = new CNUserUtilCallback();  
19 -  
20 - //通过cnUserBuilder设置请求接口是需要传入的参数,也可以获得请求接口成功后获得的数据  
21 - public CNUserBuilder.Builder cnUserBuilder = new CNUserBuilder.Builder(); 12 + protected static UserData userData; // 用户信息
22 13
23 @Override 14 @Override
24 protected void onCreate(Bundle savedInstanceState) { 15 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState); 16 super.onCreate(savedInstanceState);
26 - //初始化用户SDK  
27 - cnLiveUser = new CNLiveUser(cnUserCallBack, cnUserBuilder);  
28 - }  
29 -  
30 - //通过CNUserUtilCallback处理SDK状态,通过what和extra可以获取错误码和错误信息  
31 - private class CNUserUtilCallback implements CNUserCallBack {  
32 -  
33 - @Override  
34 - public void onUserState(String what, String extra) {  
35 - switch (what){  
36 - case UserState.ERROR_INIT_NETWORK:  
37 - //网络连接失败  
38 - break;  
39 - case UserState.ERROR_INIT_OTHER:  
40 - //内部错误  
41 - break;  
42 - }  
43 - Log.e("DemoView", "errorCode = " + what + " errorMessage = " + extra);  
44 - }  
45 } 17 }
46 } 18 }
app/src/main/java/com/cnlive/libs/LoginActivity.java
@@ -2,17 +2,23 @@ package com.cnlive.libs; @@ -2,17 +2,23 @@ package com.cnlive.libs;
2 2
3 import android.content.Intent; 3 import android.content.Intent;
4 import android.os.Bundle; 4 import android.os.Bundle;
  5 +import android.util.Log;
5 import android.view.View; 6 import android.view.View;
6 import android.widget.Button; 7 import android.widget.Button;
7 import android.widget.EditText; 8 import android.widget.EditText;
8 import android.widget.TextView; 9 import android.widget.TextView;
9 10
10 -import com.cnlive.libs.user.model.CNUserBuilder; 11 +import com.cnlive.libs.user.IUserService;
  12 +import com.cnlive.libs.user.UserUtil;
  13 +import com.cnlive.libs.user.model.UserData;
  14 +import com.cnlive.libs.util.data.network.Callback;
11 15
12 /** 16 /**
13 * 用户登录 17 * 用户登录
14 */ 18 */
15 public class LoginActivity extends BaseActivity implements View.OnClickListener { 19 public class LoginActivity extends BaseActivity implements View.OnClickListener {
  20 + private static final String TAG_LOGIN = "Login";
  21 + private static final String TAG_THIRDPARTY_LOGIN = "ThirdPartyLogin";
16 private EditText userName, userPassword; 22 private EditText userName, userPassword;
17 private Button login; 23 private Button login;
18 private TextView register, quickLogin, other, thirdParytLogin; 24 private TextView register, quickLogin, other, thirdParytLogin;
@@ -61,22 +67,80 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener @@ -61,22 +67,80 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
61 startActivity(intent); 67 startActivity(intent);
62 break; 68 break;
63 case R.id.login: 69 case R.id.login:
64 - //用户名&密码登录  
65 - cnUserBuilder.setUserName(String.valueOf(userName.getText()));//用户名  
66 - cnUserBuilder.setPwd(String.valueOf(userPassword.getText()));//密码  
67 -// cnUserBuilder.setFrmId("frmId");//渠道ID  
68 - cnLiveUser.login(); 70 + /**
  71 + * 用户名&密码登录
  72 + *
  73 + * @param userName 手机邮箱或ID
  74 + * @param pwd 密码
  75 + * @param frmId 渠道ID(非必传参数,可以传"")
  76 + * @param callback 回调
  77 + */
  78 + UserUtil.login(userName.getText().toString(), userPassword.getText().toString(), "frmId", new Callback() {
  79 + @Override
  80 + public void onState(int what, String extra, Object obj) {
  81 + switch (what) {
  82 + case IUserService.SUCCESS:
  83 + //成功 obj返回用户信息
  84 + userData = ((UserData) obj);
  85 + break;
  86 + case IUserService.ERROR_USER_NOT_FOUND:
  87 + Log.e(TAG_LOGIN, IUserService.message_error_user_not_found);
  88 + break;
  89 + case IUserService.ERROR_USERNAME_OR_PASSWORD:
  90 + Log.e(TAG_LOGIN, IUserService.message_error_username_or_password);
  91 + break;
  92 + case IUserService.ERROR_PASSWORD:
  93 + Log.e(TAG_LOGIN, IUserService.message_error_password);
  94 + break;
  95 + }
  96 + }
  97 + });
69 break; 98 break;
70 case R.id.third_party_login: 99 case R.id.third_party_login:
71 - //第三方登陆  
72 - cnUserBuilder.setThirdPartyPlat(1);// 第三方平台编号 [platform : 1:sina weibo 2:qq weibo 3:weixin 4:renren  
73 - cnUserBuilder.setThirdPartyId("id");//第三方用户ID  
74 - cnUserBuilder.setNickName("nickname");//用户昵称?重复  
75 -// cnUserBuilder.setGender("n");//性别,m:男、f:女、n:未知  
76 -// cnUserBuilder.setLocation("location");//用户所在地 非必传  
77 -// cnUserBuilder.setFaceUrl("faceUrl");//头像  
78 -// cnUserBuilder.setFrmId("frmId");//渠道ID  
79 - cnLiveUser.thirdPartyLogin(); 100 + /**
  101 + * 第三方登陆
  102 + *
  103 + * @param thirdPartyPlat 第三方平台编号 [platform : 1:sina 2:qq 3:weixin 4:renren]
  104 + * @param thirdPartyId 第三方用户ID
  105 + * @param nickName 用户昵称?重复
  106 + * @param gender 性别,m:男、f:女、n:未知
  107 + * @param location 用户所在地
  108 + * @param faceUrl 头像,约100*100
  109 + * @param frmId 渠道ID(非必传参数,可以传"")
  110 + * @param callback 回调
  111 + */
  112 + UserUtil.thirdPartyLogin(1, "thirdPartyId", "nickName", "gender", "location", "faceUrl", "frmId", new Callback() {
  113 + @Override
  114 + public void onState(int what, String extra, Object obj) {
  115 + switch (what) {
  116 + case IUserService.SUCCESS:
  117 + //成功 obj返回用户信息
  118 + userData = ((UserData) obj);
  119 + break;
  120 + case IUserService.ERROR_THIRD_PLAT_ID:
  121 + Log.e(TAG_THIRDPARTY_LOGIN, IUserService.message_error_third_plat_id);
  122 + break;
  123 + case IUserService.ERROR_CLIENT_PLAT:
  124 + Log.e(TAG_THIRDPARTY_LOGIN, IUserService.message_error_client_plat);
  125 + break;
  126 + case IUserService.ERROR_GENDER:
  127 + Log.e(TAG_THIRDPARTY_LOGIN, IUserService.message_error_gender);
  128 + break;
  129 + case IUserService.ERROR_ADDRESS:
  130 + Log.e(TAG_THIRDPARTY_LOGIN, IUserService.message_error_address);
  131 + break;
  132 + case IUserService.ERROR_FACE_URL:
  133 + Log.e(TAG_THIRDPARTY_LOGIN, IUserService.message_error_face_url);
  134 + break;
  135 + case IUserService.ERROR_NICK_NAME_EXIST:
  136 + Log.e(TAG_THIRDPARTY_LOGIN, IUserService.message_error_nick_name_exist);
  137 + break;
  138 + case IUserService.ERROR_OTHER:
  139 + Log.e(TAG_THIRDPARTY_LOGIN, IUserService.message_error_other);
  140 + break;
  141 + }
  142 + }
  143 + });
80 break; 144 break;
81 } 145 }
82 } 146 }
app/src/main/java/com/cnlive/libs/OtherActivity.java
1 package com.cnlive.libs; 1 package com.cnlive.libs;
2 2
3 import android.os.Bundle; 3 import android.os.Bundle;
  4 +import android.util.Log;
4 import android.view.View; 5 import android.view.View;
5 import android.widget.Button; 6 import android.widget.Button;
6 import android.widget.EditText; 7 import android.widget.EditText;
7 import android.widget.TextView; 8 import android.widget.TextView;
8 9
9 -import com.cnlive.libs.user.model.CNUserBuilder; 10 +import com.cnlive.libs.user.IUserService;
  11 +import com.cnlive.libs.user.UserUtil;
  12 +import com.cnlive.libs.user.model.UserData;
  13 +import com.cnlive.libs.util.data.network.Callback;
10 14
11 import java.io.File; 15 import java.io.File;
12 16
13 public class OtherActivity extends BaseActivity implements View.OnClickListener { 17 public class OtherActivity extends BaseActivity implements View.OnClickListener {
  18 + private static final String TAG_FEEDBACK = "Feedback";
  19 + private static final String TAG_UPLOAD_FACE = "UploadFace";
  20 + private static final String TAG_UPDATE_MOBILE = "UpdateMobile";
  21 + private static final String TAG_UPDATE_USER_EXT_INFO = "UpdateExtInfo";
  22 + private static final String TAG_QUERY_USER_INFO = "QueryUserInfo";
  23 + private static final String TAG_MODIFY_USER_INFO = "ModifyUserInfo";
  24 + private static final String TAG_MODIFY_PWD = "ModifyPwdWithMob";
  25 + private static final String TAG_BIND_THIRD = "BindThirdParty";
  26 + private static final String TAG_SEND_MSG_BEF_FINDBACK = "SendMsgBefFindBack";
14 27
15 //demo中上传的头像文件 28 //demo中上传的头像文件
16 File file = new File("/sdcard/1.jpg"); 29 File file = new File("/sdcard/1.jpg");
17 30
18 private EditText feedbackMsg; 31 private EditText feedbackMsg;
19 private Button feedback, uploadFace; 32 private Button feedback, uploadFace;
20 - private TextView modifyMobile, updateUserExtInfo, queryUserInfo, modifyUserInfo, modifyPwdWithMobile; 33 + private TextView modifyMobile, updateUserExtInfo, queryUserInfo, modifyUserInfo, modifyPwdWithMobile, bindThird, sendMessage;
21 34
22 35
  36 + private String uid;
  37 +
23 @Override 38 @Override
24 protected void onCreate(Bundle savedInstanceState) { 39 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState); 40 super.onCreate(savedInstanceState);
26 setContentView(R.layout.activity_other); 41 setContentView(R.layout.activity_other);
  42 + uid = userData.getData().getUid();
27 initView(); 43 initView();
28 } 44 }
29 45
@@ -57,51 +73,389 @@ public class OtherActivity extends BaseActivity implements View.OnClickListener @@ -57,51 +73,389 @@ public class OtherActivity extends BaseActivity implements View.OnClickListener
57 //通过手机号码更改密码 73 //通过手机号码更改密码
58 modifyPwdWithMobile = (TextView) findViewById(R.id.modify_pwd_through_mobile); 74 modifyPwdWithMobile = (TextView) findViewById(R.id.modify_pwd_through_mobile);
59 modifyPwdWithMobile.setOnClickListener(this); 75 modifyPwdWithMobile.setOnClickListener(this);
  76 +
  77 + //绑定第三方
  78 + bindThird = (TextView) findViewById(R.id.bind_third);
  79 + bindThird.setOnClickListener(this);
  80 +
  81 + // 找回或修改密码前发手机验证码
  82 + sendMessage = (TextView) findViewById(R.id.send_message);
  83 + sendMessage.setOnClickListener(this);
60 } 84 }
61 85
62 @Override 86 @Override
63 public void onClick(View view) { 87 public void onClick(View view) {
64 switch (view.getId()) { 88 switch (view.getId()) {
65 case R.id.uploadface: 89 case R.id.uploadface:
66 - //上传头像  
67 - cnUserBuilder.setSecret("33eb04e9ca7001e878eb8a57e2a1068d7b48c2909fc341");//app_secret  
68 - cnLiveUser.uploadFace(file); 90 + /**
  91 + * 上传头像
  92 + * @param uid 用户ID
  93 + * @param secret 获取access_token 凭证
  94 + * @param file 头像文件
  95 + * @param callback 回调
  96 + */
  97 + UserUtil.uploadFace(uid, "33eb04e9ca7001e878eb8a57e2a1068d7b48c2909fc341", file, new Callback() {
  98 + @Override
  99 + public void onState(int what, String extra, Object obj) {
  100 + switch (what) {
  101 + case IUserService.SUCCESS:
  102 + //成功 obj返回头像url
  103 + String faceUrl = ((UserData) obj).getData().getFaceUrl();
  104 + break;
  105 + case IUserService.ERROR_CLIENT_PLAT:
  106 + Log.e(TAG_UPLOAD_FACE, IUserService.message_error_client_plat);
  107 + break;
  108 + case IUserService.ERROR_UPLOAD_FILE_FAILED:
  109 + Log.e(TAG_UPLOAD_FACE, IUserService.message_error_upload_file_failed);
  110 + break;
  111 + case IUserService.ERROR_UPDATE_FACE:
  112 + Log.e(TAG_UPLOAD_FACE, IUserService.message_error_update_face);
  113 + break;
  114 + case IUserService.ERROR_OTHER:
  115 + Log.e(TAG_UPLOAD_FACE, IUserService.message_error_other);
  116 + break;
  117 + }
  118 + }
  119 + });
69 break; 120 break;
70 case R.id.feedback: 121 case R.id.feedback:
71 - //用户反馈  
72 - cnUserBuilder.setId("id");  
73 - cnUserBuilder.setMsg(feedbackMsg.getText().toString());  
74 - cnLiveUser.feedback(); 122 + /**
  123 + * 用户反馈
  124 + *
  125 + * @param id 举报内容ID
  126 + * @param msg 举报内容(app自己组织-不能带特殊字符&号等)
  127 + * @param callback 回调
  128 + */
  129 + UserUtil.feedback("id", feedbackMsg.getText().toString(), new Callback() {
  130 + @Override
  131 + public void onState(int what, String extra, Object obj) {
  132 + switch (what) {
  133 + case IUserService.SUCCESS:
  134 + //成功
  135 + break;
  136 + case IUserService.ERROR_FEEDBACK_INSERT_FAILED:
  137 + Log.e(TAG_FEEDBACK, IUserService.message_feedback_insert_failed);
  138 + break;
  139 + case IUserService.ERROR_FEEDBACK_LENGTH:
  140 + Log.e(TAG_FEEDBACK, IUserService.message_feedback_length);
  141 + break;
  142 + case IUserService.ERROR_OTHER:
  143 + Log.e(TAG_FEEDBACK, IUserService.message_error_other);
  144 + break;
  145 + }
  146 + }
  147 + });
75 break; 148 break;
76 case R.id.modify_mobile: 149 case R.id.modify_mobile:
77 - //更新手机号  
78 - cnUserBuilder.setMobile("18811122371");//手机号  
79 - cnUserBuilder.setVerificationCode("123456");//手机验证码  
80 - cnLiveUser.updateMobile(); 150 + /**
  151 + * 更新手机号
  152 + *
  153 + * @param uid 用户ID
  154 + * @param mobile 手机号
  155 + * @param verificationCode 手机验证码
  156 + * @param callback 回调
  157 + */
  158 + UserUtil.updateMobile(uid, "18811122371", "123456", new Callback() {
  159 + @Override
  160 + public void onState(int what, String extra, Object obj) {
  161 + switch (what) {
  162 + case IUserService.SUCCESS:
  163 + //成功
  164 + break;
  165 + case IUserService.ERROR_MOBILE:
  166 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_mobile);
  167 + break;
  168 + case IUserService.ERROR_VERIFICATION_CODE_LENGTH:
  169 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_verfication_code_length);
  170 + break;
  171 + case IUserService.ERROR_CLIENT_PLAT:
  172 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_client_plat);
  173 + break;
  174 + case IUserService.ERROR_TOKEN_INVALID:
  175 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_token_invalid);
  176 + break;
  177 + case IUserService.ERROR_TOKEN_CHECKING:
  178 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_token_checking);
  179 + break;
  180 + case IUserService.ERROR_VERIFICATION_CODE:
  181 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_verfication_code);
  182 + break;
  183 + case IUserService.ERROR_MOBILE_EXIST:
  184 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_mobile_exist);
  185 + break;
  186 + case IUserService.ERROR_CHANGE_USERNAME_FAILED:
  187 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_change_username_failed);
  188 + break;
  189 + case IUserService.ERROR_CHANGE_NICKNAME_FAILED:
  190 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_change_nickname_failed);
  191 + break;
  192 + case IUserService.ERROR_OPERATE:
  193 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_operate);
  194 + break;
  195 + case IUserService.ERROR_USER_NOT_FOUND:
  196 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_user_not_found);
  197 + break;
  198 + case IUserService.ERROR_OTHER:
  199 + Log.e(TAG_UPDATE_MOBILE, IUserService.message_error_other);
  200 + break;
  201 + }
  202 + }
  203 + });
81 break; 204 break;
82 case R.id.update_user_ext_info: 205 case R.id.update_user_ext_info:
83 - //更新用户附加信息  
84 - cnUserBuilder.setExtInfo("sdjfoisdf");//扩展信息(格式自己组织)  
85 - cnLiveUser.updateUserExtInfo(); 206 + /**
  207 + * 更新用户附加信息
  208 + * @param uid 用户ID
  209 + * @param extInfo 扩展信息(格式由对方自己组织,平台只负责存储和原样读取)
  210 + * @param callback 回调
  211 + */
  212 + UserUtil.updateUserExtInfo(uid, "didjosdfs", new Callback() {
  213 + @Override
  214 + public void onState(int what, String extra, Object obj) {
  215 + switch (what) {
  216 + case IUserService.SUCCESS:
  217 + //成功
  218 + break;
  219 + case IUserService.ERROR_TOKEN_INVALID:
  220 + Log.e(TAG_UPDATE_USER_EXT_INFO, IUserService.message_error_token_invalid);
  221 + break;
  222 + case IUserService.ERROR_TOKEN_CHECKING:
  223 + Log.e(TAG_UPDATE_USER_EXT_INFO, IUserService.message_error_token_checking);
  224 + break;
  225 + case IUserService.ERROR_OPERATE:
  226 + Log.e(TAG_UPDATE_USER_EXT_INFO, IUserService.message_error_operate);
  227 + break;
  228 + case IUserService.ERROR_OTHER:
  229 + Log.e(TAG_UPDATE_USER_EXT_INFO, IUserService.message_error_other);
  230 + break;
  231 + }
  232 + }
  233 + });
86 break; 234 break;
87 case R.id.query_user_info: 235 case R.id.query_user_info:
88 - //查询用户信息  
89 - cnUserBuilder.setSrcUid("1342671");//被查询用户ID  
90 - cnLiveUser.queryUserInfo(); 236 + /**
  237 + * 查询用户信息
  238 + *
  239 + * @param uid 用户ID
  240 + * @param srcUid 被查询用户ID
  241 + * @param callback 回调
  242 + */
  243 + UserUtil.queryUserInfo(uid, uid, new Callback() {
  244 + @Override
  245 + public void onState(int what, String extra, Object obj) {
  246 + switch (what) {
  247 + case IUserService.SUCCESS:
  248 + //成功 obj返回用户信息
  249 + userData = (UserData) obj;
  250 + break;
  251 + case IUserService.ERROR_TOKEN_INVALID:
  252 + Log.e(TAG_QUERY_USER_INFO, IUserService.message_error_token_invalid);
  253 + break;
  254 + case IUserService.ERROR_TOKEN_CHECKING:
  255 + Log.e(TAG_QUERY_USER_INFO, IUserService.message_error_token_checking);
  256 + break;
  257 + case IUserService.ERROR_NOT_FOUND_RECORD:
  258 + Log.e(TAG_QUERY_USER_INFO, IUserService.message_error_not_found_record);
  259 + break;
  260 + }
  261 + }
  262 + });
91 break; 263 break;
92 case R.id.modify_user_info: 264 case R.id.modify_user_info:
93 - //更新用户单项信息  
94 - cnUserBuilder.setType("nickName");//nickName-昵称,gender-性别,email-邮箱, location-联系方式  
95 - cnUserBuilder.setValue("woaa");  
96 - cnLiveUser.modifyUserInfo(); 265 + /**
  266 + * 修改用户单项信息
  267 + *
  268 + * @param uid 用户ID
  269 + * @param type nickName-昵称,gender-性别,email-邮箱, location-联系方式
  270 + * @param value 对应的信息
  271 + * @param callback 回调
  272 + */
  273 +
  274 + UserUtil.modifyUserInfo(uid, "nickName", "Lynn", new Callback() {
  275 + @Override
  276 + public void onState(int what, String extra, Object obj) {
  277 + switch (what) {
  278 + case IUserService.SUCCESS:
  279 + //成功
  280 + break;
  281 + case IUserService.ERROR_TOKEN_INVALID:
  282 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_token_invalid);
  283 + break;
  284 + case IUserService.ERROR_TOKEN_CHECKING:
  285 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_token_checking);
  286 + break;
  287 + case IUserService.ERROR_OPERATE:
  288 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_operate);
  289 + break;
  290 + case IUserService.ERROR_NICK_NAME_LENGTH:
  291 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_nick_name_length);
  292 + break;
  293 + case IUserService.ERROR_NICK_NAME_EXIST:
  294 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_nick_name_exist);
  295 + break;
  296 + case IUserService.ERROR_GENDER:
  297 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_gender);
  298 + break;
  299 + case IUserService.ERROR_PASSWORD_CONTENT:
  300 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_password_content);
  301 + break;
  302 + case IUserService.ERROR_MAIL_FORMAT:
  303 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_mail_format);
  304 + break;
  305 + case IUserService.ERROR_MAIL:
  306 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_mail);
  307 + break;
  308 + case IUserService.ERROR_MAIL_EXIST:
  309 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_mail_exist);
  310 + break;
  311 + case IUserService.ERROR_CHANGE_USERNAME_FAILED:
  312 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_change_username_failed);
  313 + break;
  314 + case IUserService.ERROR_CHANGE_NICKNAME_FAILED:
  315 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_change_nickname_failed);
  316 + break;
  317 + case IUserService.ERROR_ADDRESS:
  318 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_address);
  319 + break;
  320 + case IUserService.ERROR_TYPE_INVALID:
  321 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_type_invalid);
  322 + break;
  323 + case IUserService.ERROR_OTHER:
  324 + Log.e(TAG_MODIFY_USER_INFO, IUserService.message_error_other);
  325 + break;
  326 + }
  327 + }
  328 + });
97 break; 329 break;
98 case R.id.modify_pwd_through_mobile: 330 case R.id.modify_pwd_through_mobile:
99 - //通过手机号码修改密码  
100 - cnUserBuilder.setMobile("18811122371");//手机号  
101 - cnUserBuilder.setVerificationCode("123456");//验证码  
102 - cnUserBuilder.setNewPwd("123456");//新密码  
103 - cnLiveUser.modifyPwdWithMob(); 331 + /**
  332 + * 通过手机号修改密码
  333 + *
  334 + * @param mobile 手机号
  335 + * @param verificationCode 手机验证码
  336 + * @param newPwd 新密码
  337 + * @param callback 签名
  338 + */
  339 + UserUtil.modifyPwdWithMob("mobile", "verficationCode", "newPwd", new Callback() {
  340 + @Override
  341 + public void onState(int what, String extra, Object obj) {
  342 + switch (what) {
  343 + case IUserService.SUCCESS:
  344 + //成功
  345 + break;
  346 + case IUserService.ERROR_MOBILE:
  347 + Log.e(TAG_MODIFY_PWD, IUserService.message_error_mobile);
  348 + break;
  349 + case IUserService.ERROR_VERIFICATION_CODE_LENGTH:
  350 + Log.e(TAG_MODIFY_PWD, IUserService.message_error_verfication_code_length);
  351 + break;
  352 + case IUserService.ERROR_PASSWORD_CONTENT:
  353 + Log.e(TAG_MODIFY_PWD, IUserService.message_error_password_content);
  354 + break;
  355 + case IUserService.ERROR_VERIFICATION_CODE:
  356 + Log.e(TAG_MODIFY_PWD, IUserService.message_error_verfication_code);
  357 + break;
  358 + case IUserService.ERROR_MOBILE_NOT_REGISTER:
  359 + Log.e(TAG_MODIFY_PWD, IUserService.message_error_mobile_not_register);
  360 + break;
  361 + case IUserService.ERROR_OTHER:
  362 + Log.e(TAG_MODIFY_PWD, IUserService.message_error_other);
  363 + break;
  364 + }
  365 + }
  366 + });
  367 + break;
  368 + case R.id.bind_third:
  369 + /**
  370 + * 绑定第三方账号
  371 + *
  372 + * @param uid 用户ID
  373 + * @param thirdPartyPlat 第三方平台编号 [platform : 1:sina 2:qq 3:weixin 4:renren]
  374 + * @param thirdPartyId 第三方用户ID
  375 + * @param callback 回调
  376 + */
  377 + UserUtil.bindThird(uid, 1, "thirdPartyId", new Callback() {
  378 + @Override
  379 + public void onState(int what, String extra, Object obj) {
  380 + switch (what) {
  381 + case IUserService.SUCCESS:
  382 + //成功
  383 + break;
  384 + case IUserService.ERROR_THIRD_PLAT_ID:
  385 + Log.e(TAG_BIND_THIRD, IUserService.message_error_third_plat_id);
  386 + break;
  387 + case IUserService.ERROR_CLIENT_PLAT:
  388 + Log.e(TAG_BIND_THIRD, IUserService.message_error_client_plat);
  389 + break;
  390 + case IUserService.ERROR_TOKEN_INVALID:
  391 + Log.e(TAG_BIND_THIRD, IUserService.message_error_token_invalid);
  392 + break;
  393 + case IUserService.ERROR_TOKEN_CHECKING:
  394 + Log.e(TAG_BIND_THIRD, IUserService.message_error_token_checking);
  395 + break;
  396 + case IUserService.ERROR_THIRDPLAT_BINDED:
  397 + Log.e(TAG_BIND_THIRD, IUserService.message_error_thirdplat_binded);
  398 + break;
  399 + case IUserService.ERROR_BIND_FAILED:
  400 + Log.e(TAG_BIND_THIRD, IUserService.message_error_bind_failed);
  401 + break;
  402 + case IUserService.ERROR_OTHER:
  403 + Log.e(TAG_BIND_THIRD, IUserService.message_error_other);
  404 + break;
  405 + }
  406 + }
  407 + });
104 break; 408 break;
  409 + case R.id.send_message:
  410 + /**
  411 + * 找回或修改密码前发手机验证码
  412 + *
  413 + * @param type
  414 + * @param mobile 手机号
  415 + * @param callback 回调
  416 + *
  417 + * 发送手机验证码需要传入一个type值用来区分发送的验证码是用来做什么的
  418 + * QUICK_LOGIN--->快捷登陆前发送手机验证码
  419 + * REGISTER_OR_MODIFY_MOBILE---> 注册或修改手机号前发手机验证码
  420 + * RETRIEVE_OR_MODIFY_PASSWORD---> 找回或修改密码前发手机验证码
  421 + */
  422 + UserUtil.sendMessage(IUserService.RETRIEVE_OR_MODIFY_PASSWORD, "mobile", new Callback() {
  423 + @Override
  424 + public void onState(int what, String extra, Object obj) {
  425 + switch (what) {
  426 + case IUserService.SUCCESS:
  427 + //成功
  428 + break;
  429 + case IUserService.ERROR_MOBILE:
  430 + Log.e(TAG_SEND_MSG_BEF_FINDBACK, IUserService.message_error_mobile);
  431 + break;
  432 + case IUserService.ERROR_CLIENT_PLAT:
  433 + Log.e(TAG_SEND_MSG_BEF_FINDBACK, IUserService.message_error_client_plat);
  434 + break;
  435 + case IUserService.ERROR_MOBILE_NOT_REGISTER:
  436 + Log.e(TAG_SEND_MSG_BEF_FINDBACK, IUserService.message_error_mobile_not_register);
  437 + break;
  438 + case IUserService.ERROR_MESSAGE_SERVER:
  439 + Log.e(TAG_SEND_MSG_BEF_FINDBACK, IUserService.message_error_server);
  440 + break;
  441 + case IUserService.ERROR_MESSAGE_SERVER_ANALYSIS:
  442 + Log.e(TAG_SEND_MSG_BEF_FINDBACK, IUserService.message_error_message_server_analysis);
  443 + break;
  444 + case IUserService.ERROR_OTHER:
  445 + Log.e(TAG_SEND_MSG_BEF_FINDBACK, IUserService.message_error_other);
  446 + break;
  447 + case IUserService.ERROR_SEND_MESSAGE_TO_MUCH:
  448 + Log.e(TAG_SEND_MSG_BEF_FINDBACK, IUserService.message_error_send_message_to_much);
  449 + break;
  450 + case IUserService.ERROR_SEND_MESSAGE_FAILED:
  451 + Log.e(TAG_SEND_MSG_BEF_FINDBACK, IUserService.message_error_send_message_failed);
  452 + break;
  453 + case IUserService.ERROR_MESSAGE_OTHER:
  454 + Log.e(TAG_SEND_MSG_BEF_FINDBACK, IUserService.message_error_message_other);
  455 + break;
  456 + }
  457 + }
  458 + });
105 } 459 }
106 } 460 }
107 } 461 }
app/src/main/java/com/cnlive/libs/QuickLoginActivity.java
1 package com.cnlive.libs; 1 package com.cnlive.libs;
2 2
3 import android.os.Bundle; 3 import android.os.Bundle;
  4 +import android.util.Log;
4 import android.view.View; 5 import android.view.View;
5 import android.widget.Button; 6 import android.widget.Button;
6 import android.widget.EditText; 7 import android.widget.EditText;
7 8
8 -import com.cnlive.libs.user.model.CNUserBuilder;  
9 -import com.cnlive.libs.user.model.UserState; 9 +import com.cnlive.libs.user.IUserService;
  10 +import com.cnlive.libs.user.UserUtil;
  11 +import com.cnlive.libs.user.model.UserData;
  12 +import com.cnlive.libs.util.data.network.Callback;
10 13
11 /** 14 /**
12 * 用户快捷登录(手机验证码登录) 15 * 用户快捷登录(手机验证码登录)
13 */ 16 */
14 public class QuickLoginActivity extends BaseActivity implements View.OnClickListener { 17 public class QuickLoginActivity extends BaseActivity implements View.OnClickListener {
15 18
  19 + private static final String SEND_MESSAGE_TAG = "SendMsgbefQuickLogin";
  20 + private static final String QUICK_LOGIN = "QuickLogin";
16 private EditText mobile, code; 21 private EditText mobile, code;
17 private Button getCode, quickLogin; 22 private Button getCode, quickLogin;
18 23
@@ -38,22 +43,89 @@ public class QuickLoginActivity extends BaseActivity implements View.OnClickList @@ -38,22 +43,89 @@ public class QuickLoginActivity extends BaseActivity implements View.OnClickList
38 public void onClick(View view) { 43 public void onClick(View view) {
39 switch (view.getId()) { 44 switch (view.getId()) {
40 case R.id.getNumber: 45 case R.id.getNumber:
41 - //快捷登录前发送手机验证码  
42 - cnUserBuilder.setMobile(mobile.getText().toString());  
43 /** 46 /**
  47 + * 快捷登录前发送手机验证码
  48 + * @param type
  49 + * @param mobile 手机号
  50 + * @param callback 回调
  51 + *
44 * 发送手机验证码需要传入一个type值用来区分发送的验证码是用来做什么的 52 * 发送手机验证码需要传入一个type值用来区分发送的验证码是用来做什么的
45 * QUICK_LOGIN--->快捷登陆前发送手机验证码 53 * QUICK_LOGIN--->快捷登陆前发送手机验证码
46 * REGISTER_OR_MODIFY_MOBILE---> 注册或修改手机号前发手机验证码 54 * REGISTER_OR_MODIFY_MOBILE---> 注册或修改手机号前发手机验证码
47 * RETRIEVE_OR_MODIFY_PASSWORD---> 找回或修改密码前发手机验证码 55 * RETRIEVE_OR_MODIFY_PASSWORD---> 找回或修改密码前发手机验证码
48 */ 56 */
49 - cnLiveUser.sendMessage(UserState.QUICK_LOGIN); 57 + UserUtil.sendMessage(IUserService.QUICK_LOGIN, mobile.getText().toString(), new Callback() {
  58 + @Override
  59 + public void onState(int what, String extra, Object obj) {
  60 + switch (what) {
  61 + case IUserService.ERROR_MOBILE:
  62 + Log.e(SEND_MESSAGE_TAG, IUserService.message_error_mobile);
  63 + break;
  64 + case IUserService.ERROR_CLIENT_PLAT:
  65 + Log.e(SEND_MESSAGE_TAG, IUserService.message_error_client_plat);
  66 + break;
  67 + case IUserService.ERROR_MESSAGE_SERVER:
  68 + Log.e(SEND_MESSAGE_TAG, IUserService.message_error_server);
  69 + break;
  70 + case IUserService.ERROR_MESSAGE_SERVER_ANALYSIS:
  71 + Log.e(SEND_MESSAGE_TAG, IUserService.message_error_message_server_analysis);
  72 + break;
  73 + case IUserService.ERROR_OTHER:
  74 + Log.e(SEND_MESSAGE_TAG, IUserService.message_error_other);
  75 + break;
  76 + case IUserService.ERROR_SEND_MESSAGE_TO_MUCH:
  77 + Log.e(SEND_MESSAGE_TAG, IUserService.message_error_send_message_to_much);
  78 + break;
  79 + case IUserService.ERROR_SEND_MESSAGE_FAILED:
  80 + Log.e(SEND_MESSAGE_TAG, IUserService.message_error_send_message_failed);
  81 + break;
  82 + case IUserService.ERROR_MESSAGE_OTHER:
  83 + Log.e(SEND_MESSAGE_TAG, IUserService.message_error_message_other);
  84 + break;
  85 + }
  86 + }
  87 + });
50 break; 88 break;
51 case R.id.quick_login: 89 case R.id.quick_login:
52 - cnUserBuilder.setUserName(String.valueOf(mobile.getText()));  
53 - cnUserBuilder.setVerificationCode(String.valueOf(code.getText()));  
54 -// cnUserBuilder.setUuid("uuid");  
55 -// cnUserBuilder.setFrmId("frmId");  
56 - cnLiveUser.quickLogin(); 90 + /**
  91 + * 快捷登录
  92 + * @param userName 手机号
  93 + * @param verificationCode 验证码
  94 + * @param frmId 渠道ID(非必传参数,可传"")
  95 + * @param callback 回调
  96 + */
  97 + UserUtil.quickLogin(mobile.getText().toString(), code.getText().toString(), "", new Callback() {
  98 + @Override
  99 + public void onState(int what, String extra, Object obj) {
  100 + switch (what) {
  101 + case IUserService.SUCCESS:
  102 + //成功 obj返回用户信息
  103 + userData = ((UserData)obj);
  104 + break;
  105 + case IUserService.ERROR_CLIENT_PLAT:
  106 + Log.e(QUICK_LOGIN, IUserService.message_error_client_plat);
  107 + break;
  108 + case IUserService.ERROR_MOBILE:
  109 + Log.e(QUICK_LOGIN, IUserService.message_error_mobile);
  110 + break;
  111 + case IUserService.ERROR_VERIFICATION_CODE_LENGTH:
  112 + Log.e(QUICK_LOGIN, IUserService.message_error_verfication_code_length);
  113 + break;
  114 + case IUserService.ERROR_VERIFICATION_CODE:
  115 + Log.e(QUICK_LOGIN, IUserService.message_error_verfication_code);
  116 + break;
  117 + case IUserService.ERROR_MOBILE_EXIST:
  118 + Log.e(QUICK_LOGIN, IUserService.message_error_mobile_exist);
  119 + break;
  120 + case IUserService.ERROR_NICK_NAME_EXIST:
  121 + Log.e(QUICK_LOGIN, IUserService.message_error_nick_name_exist);
  122 + break;
  123 + case IUserService.ERROR_OTHER:
  124 + Log.e(QUICK_LOGIN, IUserService.message_error_other);
  125 + break;
  126 + }
  127 + }
  128 + });
57 break; 129 break;
58 } 130 }
59 } 131 }
app/src/main/java/com/cnlive/libs/RegisterActivity.java
1 package com.cnlive.libs; 1 package com.cnlive.libs;
2 2
3 import android.os.Bundle; 3 import android.os.Bundle;
  4 +import android.util.Log;
4 import android.view.View; 5 import android.view.View;
5 import android.widget.Button; 6 import android.widget.Button;
6 import android.widget.EditText; 7 import android.widget.EditText;
7 8
8 -import com.cnlive.libs.user.model.CNUserBuilder;  
9 -import com.cnlive.libs.user.model.UserState; 9 +import com.cnlive.libs.user.IUserService;
  10 +import com.cnlive.libs.user.UserUtil;
  11 +import com.cnlive.libs.user.model.UserData;
  12 +import com.cnlive.libs.util.data.network.Callback;
10 13
11 /** 14 /**
12 * 用户注册 15 * 用户注册
13 */ 16 */
14 public class RegisterActivity extends BaseActivity implements View.OnClickListener { 17 public class RegisterActivity extends BaseActivity implements View.OnClickListener {
  18 + private static final String TAG_REGISTER = "Register";
  19 + private static final String TAG_SEND_MESSAGE = "SendMsgBefRegister";
15 20
16 private EditText userName, userPassword, number; 21 private EditText userName, userPassword, number;
17 private Button register, getNumber; 22 private Button register, getNumber;
@@ -39,17 +44,105 @@ public class RegisterActivity extends BaseActivity implements View.OnClickListen @@ -39,17 +44,105 @@ public class RegisterActivity extends BaseActivity implements View.OnClickListen
39 public void onClick(View view) { 44 public void onClick(View view) {
40 switch (view.getId()) { 45 switch (view.getId()) {
41 case R.id.register: 46 case R.id.register:
42 - cnUserBuilder.setUserName(userName.getText().toString());//邮箱或手机  
43 - cnUserBuilder.setPwd(userPassword.getText().toString());//密码  
44 - cnUserBuilder.setVerificationCode(number.getText().toString());//手机验证码(手机号注册时必填)  
45 -// cnUserBuilder.setInvitationCode("invitationCode");//邀请码  
46 -// cnUserBuilder.setFrmId("frmId");//渠道ID  
47 - cnLiveUser.register(); 47 + /**
  48 + * 注册
  49 + *
  50 + * @param userName 邮箱或手机
  51 + * @param pwd 密码
  52 + * @param verificationCode 手机验证码(手机号注册时必填)
  53 + * @param invitationCode 邀请码
  54 + * @param frmId 渠道ID(非必传参数,可传入"")
  55 + * @param callback 回调
  56 + */
  57 + UserUtil.register(userName.getText().toString(), userPassword.getText().toString(), number.getText().toString(),
  58 + "invitationCode", "frmId", new Callback() {
  59 + @Override
  60 + public void onState(int what, String extra, Object obj) {
  61 + switch (what) {
  62 + case IUserService.SUCCESS:
  63 + //成功 obj返回用户信息
  64 + userData = ((UserData) obj);
  65 + break;
  66 + case IUserService.ERROR_USER_NAME:
  67 + Log.e(TAG_REGISTER, IUserService.message_error_user_name);
  68 + break;
  69 + case IUserService.ERROR_VERIFICATION_CODE_LENGTH:
  70 + Log.e(TAG_REGISTER, IUserService.message_error_verfication_code_length);
  71 + break;
  72 + case IUserService.ERROR_MAIL:
  73 + Log.e(TAG_REGISTER, IUserService.message_error_mail);
  74 + break;
  75 + case IUserService.ERROR_PASSWORD_CONTENT:
  76 + Log.e(TAG_REGISTER, IUserService.message_error_password_content);
  77 + break;
  78 + case IUserService.ERROR_CLIENT_PLAT:
  79 + Log.e(TAG_REGISTER, IUserService.message_error_client_plat);
  80 + break;
  81 + case IUserService.ERROR_MOBILE_EXIST:
  82 + Log.e(TAG_REGISTER, IUserService.message_error_mobile_exist);
  83 + break;
  84 + case IUserService.ERROR_MAIL_EXIST:
  85 + Log.e(TAG_REGISTER, IUserService.message_error_mail_exist);
  86 + break;
  87 + case IUserService.ERROR_NICK_NAME_EXIST:
  88 + Log.e(TAG_REGISTER, IUserService.message_error_nick_name_exist);
  89 + break;
  90 + case IUserService.ERROR_VERIFICATION_CODE:
  91 + Log.e(TAG_REGISTER, IUserService.message_error_verfication_code);
  92 + break;
  93 + case IUserService.ERROR_OTHER:
  94 + Log.e(TAG_REGISTER, IUserService.message_error_other);
  95 + break;
  96 + }
  97 + }
  98 + });
48 break; 99 break;
49 case R.id.getNumber: 100 case R.id.getNumber:
50 - //使用手机号注册前发送手机验证码  
51 - cnUserBuilder.setMobile(userName.getText().toString());  
52 - cnLiveUser.sendMessage(UserState.REGISTER_OR_MODIFY_MOBILE); 101 + /**
  102 + * 使用手机号注册前发送手机验证码
  103 + * @param type
  104 + * @param mobile 手机号
  105 + * @param callback 回调
  106 + *
  107 + * 发送手机验证码需要传入一个type值用来区分发送的验证码是用来做什么的
  108 + * QUICK_LOGIN--->快捷登陆前发送手机验证码
  109 + * REGISTER_OR_MODIFY_MOBILE---> 注册或修改手机号前发手机验证码
  110 + * RETRIEVE_OR_MODIFY_PASSWORD---> 找回或修改密码前发手机验证码
  111 + */
  112 + UserUtil.sendMessage(IUserService.REGISTER_OR_MODIFY_MOBILE, userName.getText().toString(), new Callback() {
  113 + @Override
  114 + public void onState(int what, String extra, Object object) {
  115 + switch (what) {
  116 + case IUserService.ERROR_MOBILE:
  117 + Log.e(TAG_SEND_MESSAGE, IUserService.message_error_mobile);
  118 + break;
  119 + case IUserService.ERROR_CLIENT_PLAT:
  120 + Log.e(TAG_SEND_MESSAGE, IUserService.message_error_client_plat);
  121 + break;
  122 + case IUserService.ERROR_MOBILE_EXIST:
  123 + Log.e(TAG_SEND_MESSAGE, IUserService.message_error_mobile_exist);
  124 + break;
  125 + case IUserService.ERROR_MESSAGE_SERVER:
  126 + Log.e(TAG_SEND_MESSAGE, IUserService.message_error_server);
  127 + break;
  128 + case IUserService.ERROR_MESSAGE_SERVER_ANALYSIS:
  129 + Log.e(TAG_SEND_MESSAGE, IUserService.message_error_message_server_analysis);
  130 + break;
  131 + case IUserService.ERROR_OTHER:
  132 + Log.e(TAG_SEND_MESSAGE, IUserService.message_error_other);
  133 + break;
  134 + case IUserService.ERROR_SEND_MESSAGE_TO_MUCH:
  135 + Log.e(TAG_SEND_MESSAGE, IUserService.message_error_send_message_to_much);
  136 + break;
  137 + case IUserService.ERROR_SEND_MESSAGE_FAILED:
  138 + Log.e(TAG_SEND_MESSAGE, IUserService.message_error_send_message_failed);
  139 + break;
  140 + case IUserService.ERROR_MESSAGE_OTHER:
  141 + Log.e(TAG_SEND_MESSAGE, IUserService.message_error_message_other);
  142 + break;
  143 + }
  144 + }
  145 + });
53 break; 146 break;
54 } 147 }
55 } 148 }
app/src/main/res/layout/activity_other.xml
@@ -49,7 +49,7 @@ @@ -49,7 +49,7 @@
49 49
50 <TextView 50 <TextView
51 android:id="@+id/modify_mobile" 51 android:id="@+id/modify_mobile"
52 - android:layout_width="wrap_content" 52 + android:layout_width="0dp"
53 android:layout_height="wrap_content" 53 android:layout_height="wrap_content"
54 android:layout_weight="1" 54 android:layout_weight="1"
55 android:text="更新手机号" 55 android:text="更新手机号"
@@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
57 57
58 <TextView 58 <TextView
59 android:id="@+id/update_user_ext_info" 59 android:id="@+id/update_user_ext_info"
60 - android:layout_width="wrap_content" 60 + android:layout_width="0dp"
61 android:layout_height="wrap_content" 61 android:layout_height="wrap_content"
62 android:layout_weight="1" 62 android:layout_weight="1"
63 android:text="更新用户附加信息" 63 android:text="更新用户附加信息"
@@ -74,7 +74,7 @@ @@ -74,7 +74,7 @@
74 74
75 <TextView 75 <TextView
76 android:id="@+id/query_user_info" 76 android:id="@+id/query_user_info"
77 - android:layout_width="wrap_content" 77 + android:layout_width="0dp"
78 android:layout_height="wrap_content" 78 android:layout_height="wrap_content"
79 android:layout_weight="1" 79 android:layout_weight="1"
80 android:text="查询用户信息" 80 android:text="查询用户信息"
@@ -82,7 +82,7 @@ @@ -82,7 +82,7 @@
82 82
83 <TextView 83 <TextView
84 android:id="@+id/modify_user_info" 84 android:id="@+id/modify_user_info"
85 - android:layout_width="wrap_content" 85 + android:layout_width="0dp"
86 android:layout_height="wrap_content" 86 android:layout_height="wrap_content"
87 android:layout_weight="1" 87 android:layout_weight="1"
88 android:text="修改用户单项信息" 88 android:text="修改用户单项信息"
@@ -99,19 +99,38 @@ @@ -99,19 +99,38 @@
99 99
100 <TextView 100 <TextView
101 android:id="@+id/modify_pwd_through_mobile" 101 android:id="@+id/modify_pwd_through_mobile"
102 - android:layout_width="wrap_content" 102 + android:layout_width="0dp"
103 android:layout_height="wrap_content" 103 android:layout_height="wrap_content"
104 android:layout_weight="1" 104 android:layout_weight="1"
105 android:text="通过手机号修改密码" 105 android:text="通过手机号修改密码"
106 android:textColor="#0000ff" /> 106 android:textColor="#0000ff" />
107 107
108 - <!--<TextView-->  
109 - <!--android:id="@+id/sendMessageBeforemodifypwd"-->  
110 - <!--android:layout_width="wrap_content"-->  
111 - <!--android:layout_height="wrap_content"-->  
112 - <!--android:text="找回或修改密码前发送验证码"-->  
113 - <!--android:layout_weight="1"-->  
114 - <!--android:textColor="#0000ff" />--> 108 + <TextView
  109 + android:id="@+id/bind_third"
  110 + android:layout_width="0dp"
  111 + android:layout_height="wrap_content"
  112 + android:layout_weight="1"
  113 + android:text="绑定第三方"
  114 + android:textColor="#0000ff" />
  115 +
  116 + </LinearLayout>
  117 +
  118 + <LinearLayout
  119 + android:id="@+id/bottom_layout"
  120 + android:layout_width="match_parent"
  121 + android:layout_height="wrap_content"
  122 + android:layout_below="@id/layout"
  123 + android:layout_marginTop="10dp"
  124 + android:orientation="horizontal">
  125 +
  126 + <TextView
  127 + android:id="@+id/send_message"
  128 + android:layout_width="0dp"
  129 + android:layout_height="wrap_content"
  130 + android:layout_weight="1"
  131 + android:text="找回或修改密码前发手机验证码"
  132 + android:textColor="#0000ff" />
  133 +
115 </LinearLayout> 134 </LinearLayout>
116 135
117 </RelativeLayout> 136 </RelativeLayout>
build.gradle
@@ -5,7 +5,7 @@ buildscript { @@ -5,7 +5,7 @@ buildscript {
5 jcenter() 5 jcenter()
6 } 6 }
7 dependencies { 7 dependencies {
8 - classpath 'com.android.tools.build:gradle:2.2.0' 8 + classpath 'com.android.tools.build:gradle:2.2.2'
9 9
10 // NOTE: Do not place your application dependencies here; they belong 10 // NOTE: Do not place your application dependencies here; they belong
11 // in the individual module build.gradle files 11 // in the individual module build.gradle files