zoukankan      html  css  js  c++  java
  • 判断用户是否已经登录

    BaseActivity

    public abstract class BaseActivity extends FragmentActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(getLayoutId());
            ButterKnife.bind(this);
    
            //将当前的activity添加到ActivityManager中
            ActivityManager.getInstance().add(this);
    
            initTitle();
    
            initData();
    
        }
    
        protected abstract void initData();
    
        protected abstract void initTitle();
    
        protected abstract int getLayoutId();
    
        public AsyncHttpClient client = new AsyncHttpClient();
    
        //启动新的activity
        public void goToActivity(Class Activity,Bundle bundle){
            Intent intent = new Intent(this,Activity);
            //携带数据
            if(bundle != null && bundle.size() != 0){
                intent.putExtra("data",bundle);
            }
    
            startActivity(intent);
        }
    
        //销毁当前的Activity
        public void removeCurrentActivity(){
            ActivityManager.getInstance().removeCurrent();
        }
    
        //销毁所有的activity
        public void removeAll(){
            ActivityManager.getInstance().removeAll();
        }
    
        //保存用户信息
        public void saveUser(User user){
            SharedPreferences sp = this.getSharedPreferences("user_info", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sp.edit();
            editor.putString("name",user.getName());
            editor.putString("imageurl",user.getImageurl());
            editor.putBoolean("iscredit", user.isCredit());
            editor.putString("phone",user.getPhone());
            editor.commit();//必须提交,否则保存不成功
        }
    
        //读取用户信息
        public User readUser(){
            SharedPreferences sp = this.getSharedPreferences("user_info", Context.MODE_PRIVATE);
            User user = new User();
            user.setName(sp.getString("name",""));
            user.setImageurl(sp.getString("imageurl", ""));
            user.setPhone(sp.getString("phone", ""));
            user.setCredit(sp.getBoolean("iscredit",false));
    
            return user;
        }
    }
    

      

    用户信息界面:--读取用户

    1.判断用户是否已经登录

    private void isLogin() {
        //查看本地是否有用户的登录信息
        SharedPreferences sp = this.getActivity().getSharedPreferences("user_info", Context.MODE_PRIVATE);
        String name = sp.getString("name", "");
        if(TextUtils.isEmpty(name)){
            //本地没有保存过用户信息,给出提示:登录
            doLogin();
    
        }else{
            //已经登录过,则直接加载用户的信息并显示
            doUser();
        }
    
    }
    

    2.给出提示:登录

    private void doLogin() {
        new AlertDialog.Builder(this.getActivity())
                    .setTitle("提示")
                    .setMessage("您还没有登录哦!么么~")
                    .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    //                            UIUtils.toast("进入登录页面",false);
                            ((BaseActivity) MeFragment.this.getActivity()).goToActivity(LoginActivity.class, null);
                        }
                    })
                    .setCancelable(false)
                    .show();
    }
    

    3.加载用户信息并显示

    private void doUser() {
    
        //1.读取本地保存的用户信息
        User user = ((BaseActivity) this.getActivity()).readUser();
        //2.获取对象信息,并设置给相应的视图显示。
        tvMeName.setText(user.getName());
    
        //判断本地是否已经保存头像的图片,如果有,则不再执行联网操作
        boolean isExist = readImage();
        if(isExist){
            return;
        }
    
        //使用Picasso联网获取图片
        Picasso.with(this.getActivity()).load(user.getImageurl()).transform(new Transformation() {
            @Override
            public Bitmap transform(Bitmap source) {//下载以后的内存中的bitmap对象
                //压缩处理
                Bitmap bitmap = BitmapUtils.zoom(source, UIUtils.dp2px(62),UIUtils.dp2px(62));
                //圆形处理
                bitmap = BitmapUtils.circleBitmap(bitmap);
                //回收bitmap资源
                source.recycle();
                return bitmap;
            }
    
            @Override
            public String key() {
                return "";//需要保证返回值不能为null。否则报错
            }
        }).into(ivMeIcon);
    
    
        //判断一下,是否开启了手势密码。如果开启:先输入手势密码
        SharedPreferences sp = this.getActivity().getSharedPreferences("secret_protect", Context.MODE_PRIVATE);
        boolean isOpen = sp.getBoolean("isOpen", false);
        if(isOpen){
            ((BaseActivity)this.getActivity()).goToActivity(GestureVerifyActivity.class,null);
            return;
        }
    }
    

      

    登入用户--保存

    LoginActivity

    @OnClick(R.id.btn_login)
    public void login(View view){//登录按钮的点击事件
        String number = etLoginNumber.getText().toString().trim();
        String pwd = etLoginPwd.getText().toString().trim();
        if(!TextUtils.isEmpty(number) && !TextUtils.isEmpty(pwd)){
            String url = AppNetConfig.LOGIN;
            RequestParams params = new RequestParams();
            params.put("phone",number);
            params.put("password", MD5Utils.MD5(pwd));
            client.post(url,params,new AsyncHttpResponseHandler(){
                @Override
                public void onSuccess(String content) {//200 404
                    //解析json
                    JSONObject jsonObject = JSON.parseObject(content);
                    boolean success = jsonObject.getBoolean("success");
                    if(success){
    
                        //解析json数据,生成User对象
                        String data = jsonObject.getString("data");
                        User user = JSON.parseObject(data, User.class);
    
                        //保存用户信息
                        saveUser(user);
                        //重新加载界面
                        removeAll();
                        goToActivity(MainActivity.class,null);
    
                    }else{
                        Toast.makeText(LoginActivity.this, "用户名不存在或密码不正确", Toast.LENGTH_SHORT).show();
                    }
                }
    
                @Override
                public void onFailure(Throwable error, String content) {
                    UIUtils.toast("联网失败",false);
    
                }
            });
        }else{
            UIUtils.toast("用户名或密码不能为空", false);
        }
    }
    

      

  • 相关阅读:
    修改Putty终端目录(ls命令)显示颜色
    在循环中进行提交的测试
    远程连接Redhat Linux配置
    如何部署Silverlight及Web Service
    SQL2008 的收缩日志
    WPF中DataGrid使用初步
    常用SQL
    DataGridView转datatable
    Ext程序规划入门
    下一代C#里的async和await
  • 原文地址:https://www.cnblogs.com/ganchuanpu/p/6480911.html
Copyright © 2011-2022 走看看