• 登陆 注册


    首先我们需要做的第一步就是ApiClient里面编写获取验证码的方法,具体代码如下:


    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
    <span style="font-size:18px;">/**
       * 说明:获取验证码
       * 作者:丁国华
       * 时间:2015-8-27 下午5:47:36
       */
      public static String getValidateCode(AppContext appContext,
          Map<String, Object> map) throws AppException {
        // 定义要访问的接口和要强转的实体
        String validateUrl = _MakeURL(URLs.VALIDATE_CODE_URL, map);
        ValidateCode validateCode = null;
        try {
          // 获取服务器端Json数据
          String json = http_get(appContext, validateUrl);
      
          // 解析为制定的实体对象
          validateCode = (ValidateCode) JSON.parseObject(json,
              ValidateCode.class);
      
        } catch (Exception e) {
          if (e instanceof AppException)
            throw (AppException) e;
          throw AppException.network(e);
        }
      
        // 返回验证码
        return validateCode.getCode();
      }
    </span>

           第二步编写AppContent里面的接口方法,具体代码如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <span style="font-size:18px;">/**
       * 说明:获取服务器验证码(不需要缓存)
       * 作者:丁国华
       * @date 2015-8-28 上午9:07:14
       */
      public String getCode(Map<String, Object> map) throws AppException {
      
        String validateCode = "";
      
        // 如果网络可连接且解析无误返回正确的验证码,否则返回空字符串
        if (isNetworkConnected()) {
          try {
            validateCode = ApiClient.getValidateCode(this, map);
          } catch (AppException e) {
            if (validateCode == "") {
              throw e;
            }
          }
        }
        return validateCode;
      }
    </span>

            第三步,在StringUtils里面编写验证号码是否是手机号的正则表达式,具体代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <span style="font-size:18px;"> /* 说明:移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
       * 联通:130、131、132、152、155、156、185、186
       * 电信:133、153、180、189
       * 总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9
       * 验证号码 手机号 固话均可
       * 作者:丁国华
       * 2015年9月20日 13:52:35
       */
       public static boolean isPhoneNumberValid(String phoneNumber) {
       boolean isValid = false;
       String expression = "((^(13|15|18)[0-9]{9}$)|(^0[1,2]{1}\d{1}-?\d{8}$)|(^0[3-9] {1}\d{2}-?\d{7,8}$)|(^0[1,2]{1}\d{1}-?\d{8}-(\d{1,4})$)|(^0[3-9]{1}\d{2}-? \d{7,8}-(\d{1,4})$))";
       CharSequence inputStr = phoneNumber;
       Pattern pattern = Pattern.compile(expression); 
       Matcher matcher = pattern.matcher(inputStr); 
       if (matcher.matches() ) {
       isValid = true;
       }
       return isValid;
       }
      </span>

          第四步:编写xml里面的文件,具体代码如下所示:

    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
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical" >
      <LinearLayout style="@style/top_title_style" >
        <Button
          android:id="@+id/register_back_login"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginTop="5dp"
          android:background="@null"
          android:drawableLeft="@drawable/back"
          android:paddingLeft="5dp"
          android:text=" 登录"
          android:textColor="#FFFFFF"
          android:textSize="18sp" />
        <!-- 注册的布局 -->
        <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_margin="5dp"
          android:layout_marginTop="2dp"
          android:layout_weight="1"
          android:gravity="center"
          android:paddingLeft="4dp"
          android:text="注册"
          android:textColor="#FFFFFF"
          android:textSize="20sp" />
        <!-- 注册的布局 -->
        <TextView
          android:id="@+id/nickname_confirm"
          android:layout_width="wrap_content"
          android:layout_height="match_parent"
          android:layout_marginTop="2dp"
          android:gravity="center"
          android:paddingLeft="60dp"
          android:paddingRight="10dp"
          android:textColor="#FFFFFF"
          android:textSize="20sp" />
      </LinearLayout>
      <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="45dp"
        android:minHeight="50.0dip"
        android:paddingLeft="14.0dip"
        android:paddingRight="12.0dip" >
        <ImageView
          android:layout_width="23.0dip"
          android:layout_height="23.0dip"
          android:layout_centerVertical="true"
          android:src="@drawable/user_picture" />
        <EditText
         android:id="@+id/et_register_username_id"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginLeft="20dp"
          android:background="@null"
          android:hint="用户名/手机号"
          android:paddingLeft="15dip"
          android:paddingTop="8dp"
          android:textColorHint="#BEBEBE"
          android:textSize="20sp" />
      </RelativeLayout>
      <View style="@style/PersonalLine" />
       <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="45dp"
        android:minHeight="50.0dip"
        android:paddingLeft="14.0dip"
        android:paddingRight="12.0dip" >
         <ImageView
          android:layout_width="23.0dip"
          android:layout_height="23.0dip"
          android:layout_centerVertical="true"
          android:src="@drawable/phone_picture" />
        <EditText
          android:id="@+id/et_register_code_id"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginLeft="20dp"
          android:background="@null"
          android:hint="请输入验证码"
          android:paddingLeft="15dip"
          android:paddingTop="8dp"
          android:textColorHint="#BEBEBE"
          android:textSize="20sp" />
        <Button
          android:id="@+id/bt_getcode_id"
          android:layout_width="120dp"
          android:layout_height="35dp"
          android:layout_marginLeft="200dp"
          android:layout_marginTop="5dp"
          android:background="@drawable/shape1"
          android:text="获取验证码"
          android:textColor="#FFFFFF"
          android:textSize="10sp" />
      </RelativeLayout>
      <View style="@style/PersonalLine" />
      <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="45dp"
        android:minHeight="50.0dip"
        android:paddingLeft="14.0dip"
        android:paddingRight="12.0dip" >
        <ImageView
          android:layout_width="23.0dip"
          android:layout_height="23.0dip"
          android:layout_centerVertical="true"
          android:src="@drawable/lock" />
        <EditText
         android:id="@+id/et_register_password_id"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginLeft="20dp"
          android:background="@null"
          android:hint="请输入新密码"
          android:paddingLeft="15dip"
          android:paddingTop="8dp"
          android:textColorHint="#BEBEBE"
          android:textSize="20sp" />
      </RelativeLayout>
      <View style="@style/PersonalLine" />
      <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <!-- 小对勾的布局 -->
        <CheckBox
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_margin="10dp"
          android:layout_marginLeft="-10dp"
          android:scaleX="0.8"
          android:scaleY="0.8" />
        <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
         android:layout_gravity="center_vertical"
          android:text="我同意"
          android:textSize="18sp" />
        <TextView
          android:id="@+id/user_protocol"
          android:layout_width="200dp"
          android:layout_height="match_parent"
          android:layout_gravity="center_vertical"
          android:layout_marginLeft="5dp"
          android:gravity="center"
          android:text="用户协议及隐私条款"
          android:textColor="#FE8B4A"
          android:textSize="18sp" />
      </LinearLayout>
      <Button
        android:id="@+id/bt_register_id"
        android:layout_width="245dp"
        android:layout_height="45dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="14dp"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="5dp"
        android:background="@drawable/shape2"
        android:gravity="center"
        android:text="注 册"
        android:textColor="#FFFFFF"
        android:textSize="15sp" />
      <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="80dp"
        android:paddingTop="5dp"
        android:text="您也可以直接登录"
        android:textColor="#BEBEBE"
        android:textSize="20sp" />
      <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:baselineAligned="false"
        android:gravity="center"
        android:orientation="horizontal" >
        <LinearLayout
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:gravity="center"
          android:orientation="vertical" >
          <Button
            android:layout_width="60dp"
            android:layout_height="60dp"
      android:background="@drawable/weixin_login" />
      
          <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="微信登录"
            android:textColor="#BEBEBE"
            android:textSize="20sp" />
        </LinearLayout>
        <LinearLayout
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:gravity="center"
          android:orientation="vertical" >
          <Button
            android:layout_width="60dp"
            android:layout_height="60dp"
       android:background="@drawable/weibo_login" />
          <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="微博登录"
            android:textColor="#BEBEBE"
            android:textSize="20sp" />
        </LinearLayout>
        <LinearLayout
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:gravity="center"
          android:orientation="vertical" >
          <Button
          android:layout_width="60dp"       android:layout_height="60dp"         android:background="@drawable/qq_login" />
      
          <TextView
            android:layout_width="wrap_content"
           android:layout_height="wrap_content"
            android:text="QQ登录"
            android:textColor="#BEBEBE"
            android:textSize="20sp" />
        </LinearLayout>
      </LinearLayout>
    </LinearLayout></span>

            第五步:编写java类RegisterActivity里面的代码,具体如下所示:

    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
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    <span style="font-size:18px;">package com.jczb.car.ui;
    import java.lang.ref.WeakReference;
    import java.util.HashMap;
    import java.util.Map;
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    import com.jczb.car.AppContext;
    import com.jczb.car.AppException;
    import com.jczb.car.R;
    import com.jczb.car.common.StringUtils;
    /**
     * 说明:注册功能页面 我们实现了取消线程的机制,从而保证它不会泄露 onDestroy()常常被用来在Activity推出前取消线程
     * 作者: 吴利昌
     * 时间: 2015-9-3上午9:19:15
     */
    public class RegisterActivity extends Activity implements OnClickListener {
        // 声明用到的页面控件
      private EditText etRegisterName;
      private EditText etCode;
      private EditText etPassword;
      private Button btCode;
      private Button btRegister;
      private TextView tvUserProtocol;
      private Button btRegisterLoginBack;
      // 定义变量
      private String userName;
      private String passWord;
      public boolean isChange = false;
      private boolean tag = true;
      private int i = 60;
      Thread thread = null;
      /**客户端输入的验证码*/
      private String valicationCode;
      /**服务器端获取的验证码*/
      private static String serverValicationCode;
      /** 注册时所带的参数 */
      private Map<String, Object> registerParams = new HashMap<String, Object>();
      /** 获取验证码时所带的参数 */
      private Map<String, Object> codeParams = new HashMap<String, Object>();
      /** 注册是否成功 */
      private String regisgerStatus;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);
        initView();   
      }
      /**
       * 说明:初始化页面控件和事件
       * 作者: 吴利昌
       * 时间: 2015-9-3 上午9:23:42
       */
      public void initView() {
        // 初始化控件
        etRegisterName = (EditText) findViewById(R.id.et_register_username_id);
        etCode = (EditText) findViewById(R.id.et_register_code_id);
        etPassword = (EditText) findViewById(R.id.et_register_password_id);
        btCode = (Button) findViewById(R.id.bt_getcode_id);
        btRegister = (Button) findViewById(R.id.bt_register_id);
        tvUserProtocol=(TextView)findViewById(R.id.user_protocol);
        btRegisterLoginBack=(Button)findViewById(R.id.register_back_login);
        // 初始化监听事件
        btCode.setOnClickListener(this);
        btRegister.setOnClickListener(this);
        tvUserProtocol.setOnClickListener(this);
        btRegisterLoginBack.setOnClickListener(this);
      }
      private boolean isvalidate() {
        // TODO Auto-generated method stub
        // 获取控件输入的值
        String userName = etRegisterName.getText().toString().trim();
        if (StringUtils.isEmpty(userName)) {
          Toast.makeText(this, "手机号不能为空", Toast.LENGTH_SHORT).show();
          return false;
        }
        if (!StringUtils.isPhoneNumberValid(userName)) {
          Toast.makeText(this, "手机号有误", Toast.LENGTH_SHORT).show();
          return false;
        }
        return true;
      }
      
      @Override
      public void onClick(View v) {
        switch (v.getId()) {
        case R.id.bt_getcode_id:
          if(!isvalidate())
            break;  
          btCode.setText("获取验证码");
          btCode.setClickable(true);
          isChange = true;
          changeBtnGetCode();
          getValidateCode();
          break;
        case R.id.bt_register_id:
          register();
          break;
        case R.id.user_protocol:
          Intent intentUserProtocol = new Intent(this,UserProtocolActivity.class);
          startActivity(intentUserProtocol);
          break;
        case R.id.register_back_login:
          this.finish();
          break;
        default:
          break;
        }
      }
         private void changeBtnGetCode() {
        thread = new Thread() {
          @Override
          public void run() {
            if (tag) {
              while (i > 0) {
                i--;
                if (RegisterActivity.this == null) {
                  break;
                }  
                RegisterActivity.this
                    .runOnUiThread(new Runnable() {
                      @Override
                      public void run() {
                        btCode.setText("获取验证码("
                            + i + ")");
                        btCode
                            .setClickable(false);
                      }
                    });
                try {
                  Thread.sleep(1000);
                } catch (InterruptedException e) {
                  throw new RuntimeException(e);
                }
              }
              tag = false;
            }
            i = 60;
            tag = true;
            if (RegisterActivity.this != null) {
              RegisterActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                  btCode.setText("获取验证码");
                  btCode.setClickable(true);
                }
              });
            }
          };
        };
        thread.start();
      }
      /**
       * 说明:获取验证码
       *
       * 作者: 吴利昌
       * 时间: 2015-9-3 下午3:26:55
       */
      public boolean getValidateCode() {
         String name = etRegisterName.getText().toString().trim();
        String code = etCode.getText().toString().trim();
        if (name.equals("")) {
          Toast.makeText(this, "请输入用户名或手机号!", Toast.LENGTH_SHORT).show();
          return false;
        }else {
          userName = name;
          valicationCode = code;
          Thread codeThread = new Thread(codeRunnable);
          codeThread.start();
        }
        return true;
      }
      /**
       * 说明:注册
       *
       * 作者: 吴利昌
       * 时间: 2015-9-3 下午3:27:23
       */
      public void register() {
        // 1.首先判断输入的值是否有效
        // 2.然后判断输入的验证码是否有效(防止没有点击获取验证码自己填的错误验证码)
        // 3.最后注册
        if (isValid()) {
          if (valicationCode.equals(serverValicationCode)) {
            Thread thread = new Thread(sRunnable);
            thread.start();
          }else {
            Toast.makeText(this, "输入的验证码不正确!", Toast.LENGTH_SHORT).show();
          }
            
        }
      }
      //--------------------------------获取验证码线程处理过程---开始-----------------------------
      /**
       * 自定义一个静态的具有弱引用的Handler,解决内存泄漏的问题,本handler用来获取验证码
       */
      private static class CodeHandler extends Handler {
        // 持有对本外部类的弱引用
        private final WeakReference<RegisterActivity> mActivity;
        public CodeHandler(RegisterActivity activity) {
          mActivity = new WeakReference<RegisterActivity>(activity);
        }
        @Override
        public void handleMessage(Message msg) {
          // 获取上下文对象
          RegisterActivity activity = mActivity.get();
          if (activity != null) {
            switch (msg.what) {
            case 1:
              serverValicationCode = (String)msg.obj;
              //activity.etCode.setText(serverValicationCode);
              break;
            case -1:
              Toast.makeText(activity, "获取验证码失败!", Toast.LENGTH_SHORT).show();
              break;
            case 0:
              Toast.makeText(activity, "哎呀,出错啦..", Toast.LENGTH_SHORT).show();
              break;
            default:
              break;
            }
          }
        }
      }
      /**实例化自定义的handler*/
      private final CodeHandler codeHandler = new CodeHandler(this);
      private String serverCode=null;
      /**定义获取验证码的子线程*/
      private Runnable codeRunnable = new Runnable() {
        @Override
        public void run() {
          Message msg = new Message();
          Map<String, Object> map = new HashMap<String, Object>();
          map.put("jbPhone", userName);
          // 获取全局对象Application
          AppContext appContext = (AppContext) getApplication();
          try {
            // 获取服务器数据
            serverValicationCode = appContext.getCode(map);
            // 返回true则将消息的what值为1,为false则what为-1,异常为0
            if (serverValicationCode.equals("")) {
              msg.what = -1;
            } else {
              msg.what = 1;
              msg.obj = serverValicationCode;
            }
          } catch (AppException e) {
            msg.what = 0;
            e.printStackTrace();
          }
          codeHandler.sendMessage(msg);
        }
      };

        //--------------------------------获取验证码线程处理过程----完成------------------------------  

       //--------------------------------注册线程处理过程--开始----------------------------------  

    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
    /**
     * 自定义一个静态的具有弱引用的Handler,解决内存泄漏的问题,注册使用
     */
    private static class MyHandler extends Handler {
      // 持有对本外部类的弱引用
      private final WeakReference<RegisterActivity> mActivity;
     
      public MyHandler(RegisterActivity activity) {
        mActivity = new WeakReference<RegisterActivity>(activity);
      }
      @Override
      public void handleMessage(Message msg) {
          
        // 获取上下文对象
        RegisterActivity activity = mActivity.get();
        if (activity != null) {
          switch (msg.what) {
          case 1:
            Toast.makeText(activity, "注册成功!", Toast.LENGTH_SHORT).show();
            activity.finish();
            break;
          case -1:
            Toast.makeText(activity, "注册失败!", Toast.LENGTH_SHORT).show();
            break;
          case -2:
            Toast.makeText(activity, "该号已经注册!", Toast.LENGTH_SHORT).show();
            break;
          case 0:
            Toast.makeText(activity, "哎呀,出错啦..", Toast.LENGTH_SHORT).show();
            break;
          default:
            break;
          }
        }
      }
    }
    /**实例化自定义的handler*/
    private final MyHandler mHandler = new MyHandler(this);
    /**自定义子线程*/
    private Runnable sRunnable = new Runnable() {
      @Override
      public void run() {
        Message msg = new Message();
        // 获取全局对象Application
        AppContext appContext = (AppContext) getApplication();
        try {
          // 获取服务器数据
          regisgerStatus = appContext.register(registerParams);
     
          // 返回true则将消息的what值为1,为false则what为-1,异常为0
          if (regisgerStatus.equals("true")) {
            msg.what = 1;         
            msg.obj = regisgerStatus;
          } else if(regisgerStatus.equals("1")){
            msg.what = -2;           
          }else if(regisgerStatus.equals("false")){
            msg.what = -1;}
        } catch (AppException e) {
          msg.what = 0;
          e.printStackTrace();
        }
        mHandler.sendMessage(msg);
      }
    };

        //--------------------------------注册线程处理过程---完成-----------------------------------  

    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
      /**
       * 说明:注册之前判断数据是否为空
       *
       * @return
       * 作者: 吴利昌
       * 时间: 2015-9-3 下午3:29:04
       */
      public boolean isValid() {
        userName = etRegisterName.getText().toString().trim();
        valicationCode = etCode.getText().toString().trim();
        passWord = etPassword.getText().toString().trim();     
        if (userName.equals("")) {
          Toast.makeText(this, "用户名不能为空!", Toast.LENGTH_SHORT).show();
          return false;
        }
        if (valicationCode.equals("")) {
          Toast.makeText(this, "验证码不能为空!", Toast.LENGTH_SHORT).show();
          return false;
        
        if(!serverValicationCode.equals(valicationCode))
         {
          Toast.makeText(this, "验证码错误", Toast.LENGTH_SHORT).show();
          return false;
        
        if (passWord.equals("")) {
          Toast.makeText(this, "密码不能为空!", Toast.LENGTH_SHORT).show();
          return false;
        } else if (passWord.length() < 6) {
          Toast.makeText(this, "密码至少6位!", Toast.LENGTH_SHORT).show();
          return false;
        
        registerParams.put("username", userName);
        registerParams.put("psd", passWord); 
        return true;
      }
    }
    </span>

           最后,我们来运行一下,看看我们的效果,由于小编的genymotion不知道为什么不能运行了,所以委屈小伙伴们一下,看不了动态图片了,不过并不影响,我们首先用一个号码好注册一下,如下图所示:

    手机注册
    手机注册
    短信验证码
    短信验证码

            看一下手机收到的验证码:   

     
     
     

            最后来看一下,我们的注册:       

      

  • 相关阅读:
    2020年JVM面试题记录
    Java对象创建过程
    Java内存模型
    JavaMail读取邮件,如何过滤需要的邮件
    Java Mail 邮件 定时收件
    Java很简单的文件上传(transferTo方式)
    Java架构师之必须掌握的10个开源工具
    Java互联网安全项目架构平台设计
    Java互联网安全项目架构设计第一篇
    Apache POI 4.0.1版本 Excel导出数据案例(兼容 xls 和 xlsx)(六)
  • 原文地址:https://www.cnblogs.com/to-creat/p/5152661.html
Copyright © 2020-2023  润新知