android注册 登录 修改帐号密码 添加资料 给新注册用户充值DEMO

时间:2023-02-01 15:04:34
最近公司让写个 android注册 登录 修改帐号密码 添加资料 给新注册用户充值DEMO   现在功能都已经OK  目前只剩下一些小细节  现在我就把源码发布出来 给一些需要的人参考,在这里 重点只讲怎么去请求服务器 和服务器返回的一些什么东西给我们 我们如何拿到 如何处理  最后的时候我会把整个项目打包

接口的类 在一楼  因为我写的东西太多了 文字有限制 android注册 登录 修改帐号密码 添加资料 给新注册用户充值DEMO
有图有真相:


















首先我们先看一下请求服务器的类 如何写的 可结合我上一篇:
  http://blog.csdn.net/qq_35114086/article/category/6350888
这里就完善上一篇的内容:


我们首先看注册那边返回的JSON都是什么内容吧( 一会我会讲到如何抓到result>1的错误信息,然后返回给activity显示出来 )  一般你们公司都会有个后台给你们写个接口文档扔给你 让你去做的 

[mw_shl_code=java,true]{ “result”: 1, “uid”:22771,”msg”:””}

result=1 注册成功, uid为玩家uid, msg为空

result>1时注册失败, 此时返回的 uid=0
result=2:  msg:用户名格式不对 
result=3:  msg:此用户名已经被注册
result=4:  msg:密码格式不对(长度不是6-16位或者包含了其他字符,比如中文标点之类)
result=5:  msg:广告来源为空 from 的值不允许为空 
result=6:  msg:系统维护,此时不允许注册
result>6 时为其他错误, msg会返回错误的具体原因[/mw_shl_code]

我们在注册页面去请求服务器:

在我的工程:Register类


[mw_shl_code=java,true]boolean flag ;//条件成立跳转到登陆界面
    /** 请求服务器 */
        if (userName != null || password != null || from != null) {
            flag = UserDataServiceHelper.Register(context, "reg", userName, password, from);
            if(flag){
                Intent intent = new Intent();
                intent.putExtra("name", userName);
                intent.putExtra("pw", password);
                intent.putExtra("fm",from);
                intent.setClass(Register.this, Login.class);
                startActivity(intent);
            }else {
                Log.i("TAG", "不成立");
            }
            Log.i("TAG", "请求服务器" + userName + password + from);
        }
[/mw_shl_code]

传的参数里面 第一个就是context  第二个就是一个注册的参数(你们后台都会有自己弄一个参数来区分的),第三个参数就是你的名字 第4个参数就是你的密码 第五个参数其实就是一个渠道的意思(从那个渠道过来注册的,比如你从googlePlay注册的 这里随便定义一个参数 让你们的老大知道这个从googlePlay下载注册的,现在产品都这样搞的)
如果注册接口成功返回true 那么flag就会是true(默认是false嘛)  就去执行Intent,然后putExtra 把需要的东西传值到登录界面

登录界面会做什么事呢? 接着上面的问题 看下面的 代码
[mw_shl_code=java,true]  /** 初始化注册VIEW组件 */
    private void findViewById() {
        view_userName = (EditText) findViewById(R.id.loginUserNameEdit);
        view_password = (EditText) findViewById(R.id.loginPasswordEdit);
        view_rememberMe = (CheckBox) findViewById(R.id.loginRememberMeCheckBox);
        view_loginSubmit = (Button) findViewById(R.id.loginSubmit);
        view_loginRegister = (Button) findViewById(R.id.loginRegister);
        view_fast = (TextView) findViewById(R.id.fast);

        /** 注册成功后传过来用户名和密码,显示在登录界面 */
        if (!flag) {
            Intent intent = getIntent();
            userName = intent.getStringExtra("name");
            password = intent.getStringExtra("pw");
            from = intent.getStringExtra("fm");
            view_rememberMe.setChecked(false);//小BUG
            view_userName.setText(userName);
            view_password.setText(password);
        }

    }[/mw_shl_code]

登录界面就会用getStringExtra方法把刚刚从注册传过来的值  这里是根据Key,value  我们只要得到这个key("name")就OK了。  
然后我们在用setText 显示在editText上!
[mw_shl_code=java,true] view_userName.setText(userName);
            view_password.setText(password);[/mw_shl_code]



然后我们在点击登录的时候看代码  如何把刚刚从注册传过来的值在去传到登录接口  其实在这里很简单 在赋值给的string就OK了 赋值好后然后在把赋值的值传到登录接口 看例子:
[mw_shl_code=java,true]  /** 登录Button Listener */
    private OnClickListener submitListener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.i("TAG", "submitListener");
            proDialog = ProgressDialog.show(Login.this, "连接中..",
                    "连接中..请稍后....", true, true);
            // 开启一个线程进行登录验证,主要是用户失败成功可以直接通过startAcitivity(Intent)转向
            Thread loginThread = new Thread(new LoginFailureHandler());
            loginThread.start();// 开启

        }
    };[/mw_shl_code]

[mw_shl_code=java,true]// 另起一个线程登录
    class LoginFailureHandler implements Runnable {
        @Override
        public void run() {
            userName = view_userName.getText().toString();
            Log.i("TAG", "userName LoginFailureHandler" + userName);
            password = view_password.getText().toString();
            Log.i("TAG", "password LoginFailureHandler" + password);

            /** 请求服务器 */
            if (userName != null || password != null) {
                boolean loginState = UserDataServiceHelper.logins(context, "login", userName,
                        password, from);

                Log.i("TAG", "登录返回条件" + loginState);
                // 登录成功
                if (loginState) {
                    String LoginUerId = UserDataService.LoginUid;
                    // 需要传输数据到登陆后的界面,
                    Intent intent = new Intent();
                    intent.setClass(Login.this, IndexPage.class);
                    Bundle bundle = new Bundle();
                    bundle.putString("LOGIN_USERNAME", userName);
                    bundle.putString("LOGIN_PASSWORD", password);
                    bundle.putString("LOGIN_ID", LoginUerId);
                    intent.putExtras(bundle);
                    // 转向登陆后的页面
                    startActivity(intent);
                    // /** 得到请求服务器返回码 */
                    String loginStateInt = UserDataService.results;
                    int Less = Integer.valueOf(loginStateInt); // 转换成整形
                    Log.i("TAG", "登录后的返回码:" + Less);
                    if (Less == 1) {
                        StatusCode = true;
                        
                    }

                    // 登录成功记住帐号密码
                    if (StatusCode) {
                        if (isRememberMe()) {
                            saveSharePreferences(true, true);
                        } else {
                            saveSharePreferences(true, false);
                        }

                    } else {
                        // 如果不是网络错误
                        if (!isNetError) {
                            clearSharePassword();
                            clearShareName();

                        }

                    }
                    if (!view_rememberMe.isChecked()) {
                        clearSharePassword();
                        clearShareName();
                    }
                    proDialog.dismiss();
                } else {
                    // 通过调用handler来通知UI主线程更新UI,
                    Log.i("TAG", "连接失败");
                    Message message = new Message();
                    Bundle bundle = new Bundle();
                    bundle.putBoolean("isNetError", isNetError);
                    message.setData(bundle);
                    loginHandler.sendMessage(message);
                }

            }

        }
    }[/mw_shl_code]
登录后 我们就会看到一个登录成功的页面,下面有4个按钮 修改帐号,添加资料,从设密码

那么修改帐号的流程 还是跟上面登录注册一样   把所有的值用putExtra方法传过来  然后在修改帐号页面getStringExtra在得到("name",passwor)等  ,在从新声明一个string类型  在赋值  在去请求   修改帐号密码接口

添加资料也就是去请求地址 然后里面需要传什么东西 就传什么过去。

从设置也是和上面的流程  putExtra----- getStringExtra ("name",passwor)等  在从新声明一个string类型  在赋值  在去请求 
其实注册 登录  修改帐号密码  和添加资料 都是很简单的  无非就是 putExtra    getStringExtra    声明     赋值     请求  返回信息   显示
备注:
附件里面我把接口那部分已经删掉了   你们可以看上面我写的请求服务器的类  根据自己的业务需求来添加和删除   请求服务器类写的一个不好的地方就是 每个方法都加了static  呵呵   这个原因主要是  我写了一个方法  然后剩下的接口我就复制上面的 然后改改。