zoukankan      html  css  js  c++  java
  • 冲刺十九天

    学习分享亮点加入与保存用户信息(自动登录)

    学习分享亮点

       我在学习分享板块加入“课后题”,“往届期末相关试卷及答案”,“网课答案”等内容,通过一个广告链接接入到改页面,然后在该页面设计的形式有:最近阅读习题(保留用户的观看数据),全部相关习题展示

    因为该应用是服务与本校的学生,因此所选用的教材也是本学校发布的,免去学生上网去查找答案的痛苦。

      具体实现就是接下来要开始攻克的地方。

      

     用户自动登录

      针对用户使用角度而言,不愿意重复的趣输入账号和密码,因此只在用户第一次登录时输入用户名和密码,此外便不需要在输入,直接登录,这里用到的技术是sharepreference的读取与修改

    HashMap<String, String> loginmap = null;
            loginmap= (HashMap<String, String>) getMsg("login");
            if(loginmap.get("id")!=""&&loginmap.get("name")!=""&&loginmap.get("imguser")!="")
            {
                Log.i("map", loginmap.toString());
                IMLogin(loginmap.get("id"));
                startActivity(new Intent(Login.this, MainActivity.class)
                        .putExtra("id", loginmap.get("id"))
                        .putExtra("name",loginmap.get("name"))
                        .putExtra("imguser",loginmap.get("imguser")));
            }
            login_btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    final String name = search.getText().toString();
                    String userpwd = pwd.getText().toString();
                    final String reqdata = "method=login&name=" + name + "&pwd=" + userpwd + "";
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                final JSONObject jsonObject = new JSONObject(String.valueOf(HttpUtil.sendPost(requrl, reqdata)));//子线程获取json结果
                                Log.d("login", jsonObject.toString());
                                runOnUiThread(new Runnable() {    //主线程运行跳转活动
                                    @Override
                                    public void run() {
                                        try {
                                            Toast.makeText(Login.this, jsonObject.get("msg").toString(), Toast.LENGTH_SHORT).show();
                                            if (jsonObject.get("status").equals("1")) {  //状态码1代表登陆成功
                                                if (!judgeUserExists(name))
                                                    recordUser(name);
                                                IMLogin(jsonObject.getString("id"));
                                                startActivity(new Intent(Login.this, MainActivity.class)
                                                        .putExtra("id", jsonObject.get("id").toString())
                                                        .putExtra("name",name)
                                                        .putExtra("imguser",jsonObject.getString("imguser")));
                                                HashMap<String, Object> map = new HashMap<String, Object>();
                                                map.put("id", jsonObject.get("id").toString());
                                                map.put("name",name);
                                                map.put("imguser",jsonObject.getString("imguser"));
                                                saveMsg("login", map);
                                            }
                                        } catch (JSONException e) {
                                            e.printStackTrace();
                                        }
                                    }
                                });
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    }).start();
                }
            });
    //将数据存储进入共享参数
        public boolean saveMsg(String fileName, Map<String, Object> map) {
            boolean flag = false;
            // 一般Mode都使用private,比较安全
            SharedPreferences preferences = getSharedPreferences(fileName,
                    Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = preferences.edit();
            // Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。
            // 接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法,
            // 因此,上面的代码可以被组织得更符合逻辑
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                String key = entry.getKey();
                Object object = entry.getValue();
                // 根据值得不同类型,添加
                if (object instanceof Boolean) {
                    Boolean new_name = (Boolean) object;
                    editor.putBoolean(key, new_name);
                } else if (object instanceof Integer) {
                    Integer integer = (Integer) object;
                    editor.putInt(key, integer);
                } else if (object instanceof Float) {
                    Float f = (Float) object;
                    editor.putFloat(key, f);
                } else if (object instanceof Long) {
                    Long l = (Long) object;
                    editor.putLong(key, l);
                } else if (object instanceof String) {
                    String s = (String) object;
                    editor.putString(key, s);
                }
            }
            flag = editor.commit();
            return flag;
    
        }
    
        // 读取数据
        public Map<String, String> getMsg(String fileName) {
            Map<String, String> map = null;
            // 读取数据用不到edit
            SharedPreferences preferences = getSharedPreferences(fileName,
                    Context.MODE_PRIVATE);
            //Context.MODE_APPEND可以对已存在的值进行修改
            map = (Map<String, String>) preferences.getAll();
            return map;
        }

    通过存储和读取来实现用户的自动登录,同时当你选择退出登录后,那么修改sharepreference的值,让他为空

    HashMap<String, Object> map = new HashMap<String, Object>();
                    map.put("id","");
                    map.put("name","");
                    map.put("imguser","");
                    if(saveMsg("login", map))
                    {
                        Intent intent=new Intent(getActivity(), Login.class);
                        startActivity(intent);
                        getActivity().finish();
                    }

    明天任务:实现课后题布局与上传书籍功能

  • 相关阅读:
    HDU 2149 Public Sale 博弈
    HDU 1850 Being a Good Boy in Spring Festival 博弈
    HDU 2176 取(m堆)石子游戏 博弈
    HDU 1517 A Multiplication Game 博弈
    HDU 2897 邂逅明下 博弈
    51nod 1445 变色DNA 最短路
    cocos creator中粒子效果的使用
    如何在cocos中为节点添加监听事件
    C++中STL常用容器的优点和缺点
    数据库链接池c3p0的配置
  • 原文地址:https://www.cnblogs.com/xiaofengzai/p/12977526.html
Copyright © 2011-2022 走看看