Android SharedPreferences实现记住密码和自动登录

本文实例为大家分享了Android SharedPreferences实现记住密码和自动登录,供大家参考,具体内容如下

效果图:

第一次进入进来

勾选记住密码和自动登录成功后,第二次进来

说明:中间存在的图片或者多余的其他部分可删掉。留下最主要的填写部分和登陆按钮即可。功能还是可以实现的。

XML文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:background="@drawable/bj"
 tools:context="com.example.application.MainActivity">
 <ImageView
  android:layout_marginTop="50dp"
  android:layout_width="100dp"
  android:layout_height="100dp"
  android:src="@drawable/login_tx_1"
  android:layout_gravity="center"
  />
 <FrameLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content">
  <EditText
   android:layout_width="300dp"
   android:layout_height="wrap_content"
   android:layout_gravity="center"
   android:focusable="true"
   android:focusableInTouchMode="true"
   android:clickable="true"
   android:hint="请输入账号"
   android:gravity="center"
   android:paddingRight="100dp"
   android:id="@+id/login_uname"
   />
  <TextView
   android:layout_width="38dp"
   android:layout_height="33dp"
   android:layout_marginLeft="30dp"
   android:padding="6dp"
   android:gravity="center"
   android:drawableLeft="@drawable/uname"
   />
 </FrameLayout>
 <FrameLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content">
  <EditText
   android:layout_width="300dp"
   android:layout_height="wrap_content"
   android:layout_gravity="center"
   android:focusable="true"
   android:focusableInTouchMode="true"
   android:clickable="true"
   android:hint="请输入密码"
   android:gravity="center"
   android:paddingRight="100dp"
   android:password="true"
   android:id="@+id/login_upass"
   />
  <TextView
   android:layout_width="38dp"
   android:layout_height="33dp"
   android:layout_marginLeft="30dp"
   android:padding="6dp"
   android:gravity="center"
   android:drawableLeft="@drawable/upass"
   />
 </FrameLayout>

 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:gravity="center"
  >
  <CheckBox
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="记住密码"
   android:id="@+id/login_auto"
   />
  <CheckBox
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_marginLeft="50dp"
   android:text="自动登录"
   android:id="@+id/login_btn"
   />
 </LinearLayout>

 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:layout_margin="15dp"
  >
  <ImageButton
   android:layout_width="40dp"
   android:layout_height="40dp"
   android:src="@drawable/login_qq"
   />
  <ImageButton
   android:layout_width="40dp"
   android:layout_height="40dp"
   android:src="@drawable/login_weixin"
   android:layout_marginLeft="60dp"
   />
  <ImageButton
   android:layout_width="40dp"
   android:layout_height="40dp"
   android:src="@drawable/login_xinlan"
   android:layout_marginLeft="60dp"
   android:id="@+id/login_xinlan"
   />
 </LinearLayout>

 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical">

  <Button
   android:layout_width="240dp"
   android:layout_height="wrap_content"
   android:layout_gravity="center"
   android:background="@drawable/a_radio_button_selector_1"
   android:gravity="center"
   android:text="登录"
   android:id="@+id/login_login"
   />

  <Button
   android:layout_width="240dp"
   android:layout_height="wrap_content"
   android:layout_gravity="center"
   android:layout_marginTop="20dp"
   android:background="@drawable/a_radio_button_selector_1"
   android:gravity="center"
   android:text="忘记密码"
   android:id="@+id/login_find"
   />
  <TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center"
   android:layout_marginTop="20dp"
   android:text="没有账号,立即注册"
   android:textColor="#6efafa"
   android:textSize="15dp"
   android:onClick="JumpRegister"
   />
 </LinearLayout>

</LinearLayout>

Java文件

package com.example.application;

import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;
import com.sun.util.DBHelper;

import java.util.HashMap;

import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.sina.weibo.SinaWeibo;

public class MainActivity extends AppCompatActivity {
 public static String LoginUid=null;
 public static String LoginName=null;
 private Button login_login;
 private Button login_find;
 private EditText login_uname;
 private EditText login_upass;
 private CheckBox login_auto;
 private CheckBox login_btn;
 private SharedPreferences sp;
 private ImageButton login_xinlan;
 private Platform weibo;
 private DBHelper dbHelper;
 private SQLiteDatabase sqLiteDatabase;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  this.requestWindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.activity_main);
  //获取控件
  login_uname = (EditText) findViewById(R.id.login_uname);
  login_upass = (EditText) findViewById(R.id.login_upass);
  login_auto = (CheckBox) findViewById(R.id.login_auto); //记住密码
  login_btn = (CheckBox) findViewById(R.id.login_btn); //自动登录
  login_login = (Button) findViewById(R.id.login_login); //登录
  login_find = (Button) findViewById(R.id.login_find);
  login_xinlan = (ImageButton) findViewById(R.id.login_xinlan);
  //调用数据库
  dbHelper = new DBHelper(this,"dtb.db",null,1);
  sqLiteDatabase = dbHelper.getWritableDatabase();
  //第三方登录
  weibo = ShareSDK.getPlatform(SinaWeibo.NAME);
  login_xinlan.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    //回调信息,可以在这里获取基本的授权返回的信息,但是注意如果做提示和UI操作要传到主线程handler里去执行
    weibo.setPlatformActionListener(new PlatformActionListener
      () {

     @Override
     public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
      String openid = platform.getDb().getUserId();
      String nickname = platform.getDb().getUserName();
      Cursor cursor=sqLiteDatabase.rawQuery("select * from dtb_users where uname=?",new String[]{openid});
      LoginUid=cursor.getString(cursor.getColumnIndex("uid"));
      if(cursor.moveToNext()){
       Log.i("test","已经注册过!");
      }else{
       sqLiteDatabase.execSQL("insert into dtb_users(uname,upass,name,levelnumber) values('"+openid+"','null','"+nickname+"','"+1+"')");
      }
      //跳转
      MainActivity.LoginName=openid;
      Intent intent=new Intent(MainActivity.this,MainMianActivity.class);
      startActivity(intent);
     }

     @Override
     public void onError(Platform arg0, int arg1, Throwable arg2) {
      // TODO Auto-generated method stub
      arg2.printStackTrace();
     }

     @Override
     public void onCancel(Platform arg0, int arg1) {
      // TODO Auto-generated method stub

     }
    });

    //authorize与showUser单独调用一个即可
    weibo.authorize();//单独授权,OnComplete返回的hashmap是空的
    weibo.showUser(null);//授权并获取用户信息
    //移除授权
    // weibo.removeAccount(true);
   }
  });

  //自动登录判断
  sp = this.getSharedPreferences("userInfo",0);
  String name=sp.getString("USER_NAME", "");
  String pass =sp.getString("PASSWORD", "");
  boolean choseRemember =sp.getBoolean("remember", false);
  boolean choseAutoLogin =sp.getBoolean("autologin", false);
  //如果上次选了记住密码,那进入登录页面也自动勾选记住密码,并填上用户名和密码
  if(choseRemember){
   login_uname.setText(name);
   login_upass.setText(pass);
   login_auto.setChecked(true);
  }
  //如果上次登录选了自动登录,那进入登录页面也自动勾选自动登录
  if(choseAutoLogin){
   login_btn.setChecked(true);
   Cursor cursor= sqLiteDatabase.rawQuery("select * from dtb_users where uname=? and upass=?",new String[]{name,pass});
   if(cursor.moveToNext()){
    new LoginThread().start();
    LoginName=name;
    LoginUid=cursor.getString(cursor.getColumnIndex("uid"));
   }

  }

  // 登录监听事件 现在默认为用户名为:admin 密码:123
  login_login.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    String userName=login_uname.getText().toString();
    String userPass=login_upass.getText().toString();
    SharedPreferences.Editor editor =sp.edit();
    Cursor cursor= sqLiteDatabase.rawQuery("select * from dtb_users where uname=? and upass=?",new String[]{userName,userPass});
    if(cursor.moveToNext()){//判断是否查询到此数据
     Toast.makeText(MainActivity.this,"登录成功", Toast.LENGTH_SHORT).show();
      LoginName=userName;
     LoginUid=cursor.getString(cursor.getColumnIndex("uid"));
     //是否记住密码
     //记住用户名、密码、
     editor.putString("USER_NAME", userName);
     editor.putString("PASSWORD",userPass);
     if(login_auto.isChecked()){
      editor.putBoolean("remember", true);
     }else{
      editor.putBoolean("remember", false);
     }
     //是否自动登录
     if(login_btn.isChecked()){
      editor.putBoolean("autologin", true);
     }else{
      editor.putBoolean("autologin", false);
     }
      editor.commit();
     //跳转界面
     Intent intent = new Intent(MainActivity.this,MainMianActivity.class);
     startActivity(intent);
     Toast.makeText(MainActivity.this, "登录成功!", Toast.LENGTH_SHORT).show();
     // finish();
    }else{
     Toast.makeText(MainActivity.this,"用户名或密码错误,请重新登录", Toast.LENGTH_LONG).show();
    }
   }
  });
 }

 public void JumpRegister(View view){
  Intent intent=new Intent(this,RegisterActivity.class);
  startActivity(intent);
  finish();
 }
  //子线程 控制自动睡眠2秒钟后自动登录
 class LoginThread extends Thread{
  @Override
  public void run() {
   try {
    sleep(2000);
    Intent intent = new Intent(MainActivity.this,MainMianActivity.class);
    startActivity(intent);
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
  }
 }

}

Demo下载:记住密码和自动登录

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android开发笔记SQLite优化记住密码功能

    本文实例为大家分享了Android SQLite优化记住密码功能的具体代码,供大家参考,具体内容如下 package com.example.alimjan.hello_world; /** * Created by alimjan on 7/4/2017. */ import com.example.alimjan.hello_world.bean.UserInfo; import com.example.alimjan.hello_world.dataBase.UserDBHelper; i

  • Android实现用户登录记住密码功能

    一.打开之前完成的Case_login进行修改再编辑 二.将注册按钮删除并在登录按钮前拖出一个checkBox,编辑代码如下: 在layout_top.xml文件中进行编辑 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_

  • Android Walker登录记住密码页面功能实现

    本文实例为大家分享了Android Walker登录记住密码页面的具体代码,供大家参考,具体内容如下 目标效果: 这一次修改的不多,添加了点击用户登录的跳转,登录页面的记住密码,和程序运行一次后,不进入导航页面的功能. 1.MainActivity.java页面修改了setOnItemClickListener的点击事件,进行跳转. MainActivity.java页面: package com.example.login; import java.util.ArrayList; import

  • Android通过"记住密码"功能学习数据存储类SharedPreferences详解及实例

    SharedPreferences是Android中存储简单数据的一个工具类.可以想象它是一个小小的Cookie,它通过用键值对的方式把简单数据类型(boolean.int.float.long和String)存储在应用程序的私有目录下(data/data/包名/shared_prefs/)自己定义的xml文件中. 一.简介 它提供一种轻量级的数据存储方式,通过eidt()方法来修改里面的内容,通过Commit()方法来提交修改后的内容. 二.重要方法 public abstract boole

  • Android SharedPreferences实现记住密码和自动登录界面

    SharedPreferences介绍: SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在"/data/data<package name>/shared_prefs"目录下. SharedPreferences的用法: 由于SharedPreferences是一个接口,而且在这个接口里没有提供写入数据和读取数据的能力.但它是通过其Editor接口中的一些方法来操作Shared

  • Android实现带有记住密码功能的登陆界面

    本文实例为大家分享了Android带有记住密码功能的登陆界面实现代码,供大家参考,具体内容如下 1.设计思路 主要采用SharedPreferences来保存用户数据,本Demo没有经过加密,所有一旦Android系统被ROOT的话,其他用户就可以查看用户的私有目录,密码文件就很不安全.所以真正应用在软件上面的,一定要经过加密才保存,可以选择MD5加密. SharedPreferences介绍可以参看这篇博文:http://www.jb51.net/article/84859.htm TextW

  • Android 使用SharedPreferrences储存密码登录界面记住密码功能

    Android存储方式有很多种,在这里所用的存储方式是SharedPreferrences, 其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入.所以比较适合我们今天做的这个项目.我们来看一下运行图: 一.布局界面 1.login_top.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.a

  • Android sharedPreferences实现记住密码功能

    实现记住密码功能,供大家参考,具体内容如下 编写界面交互代码: package com.example.bz0209.login; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bund

  • Android实现登录界面记住密码的存储

    Android存储方式有很多种,在这里所用的存储方式是SharedPreferrences, 其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入.所以比较适合我们今天做的这个项目.我们来看一下运行图: 一.布局界面 1.login_top.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.a

  • Android SharedPreferences实现记住密码和自动登录

    本文实例为大家分享了Android SharedPreferences实现记住密码和自动登录,供大家参考,具体内容如下 效果图: 第一次进入进来 勾选记住密码和自动登录成功后,第二次进来 说明:中间存在的图片或者多余的其他部分可删掉.留下最主要的填写部分和登陆按钮即可.功能还是可以实现的. XML文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="h

  • 基于localStorge开发登录模块的记住密码与自动登录实例

    关于这个模块功能模块的由来,这是鸟大大的处女秀,为什么这么说呢?一天在群里,一个哥们说有私活,开发一个****模块,我那天手痒痒就和他聊了两句,然后,就决定给她做这个模块了,和他谈了谈交付时间,他说最迟两天,然后谈了谈加个,最后达成,500¥!!!这个模块其实第一天晚上我就开发出来了,那时我给他微信说,功能模块开发ok了,要不要远程查看一下,没问题的话就交了,一会他回我,好了就发过来,然后微信就转过来500¥,当时很诧异,毕竟是处女秀,然后就把项目交给他了,并且是完美交付,在客户那里,也没有出现

  • php中实现记住密码下次自动登录的例子

    做网站的时候经常会碰到要实现记住密码,下次自动登录,一周内免登陆,一个月内免登陆这种需求.这种功能一般都是通过cookie来实现的.本篇文章将简单说一下如何使用php实现该需求的.当然实现该需求的方法有N多种. 整个过程就是用户在登陆的时候,如果选择了记住密码或者一周内免登陆等这个选项的时候,则在用户成功登陆操作完成之后,存储一个实现自动登录的cookie的数据到数据库的用户表里面,作为下次自动登录时验证用.验证通过则自动登录,否则需要输入用户名,密码进行登录.保存的这个cookie值则可以取一

  • asp.net利用cookie保存用户密码实现自动登录的方法

    本文实例讲述了asp.net利用cookie保存用户密码实现自动登录的方法.分享给大家供大家参考.具体分析如下: 在asp.net中可以用cookie保存用户的帐户密码实现自动登录的功能,但是需要强调一下,cookie在客户端保存,是不安全的,推荐使用md5加密保存. 下面分析一下在asp.net中cookie的创建.提取与销毁的方法: 创建cookie 复制代码 代码如下: //向客户端写入Cookie HttpCookie hcUserName1 = new HttpCookie("unam

  • Python使用selenium实现网页用户名 密码 验证码自动登录功能

    好久没有学python了,反正各种理由吧(懒惰总会有千千万万的理由),最近网上学习了一下selenium,实现了一个简单的自动登录网页,具体如下. 1.安装selenium: 如果你已经安装好anaconda3,直接在windows的dos窗口输入命令安装selenium: python -m pip install --upgrade pip 查看版本pip show selenium 2.接着去http://chromedriver.storage.googleapis.com/index.

  • android实现记住用户名和密码以及自动登录

    毕业刚开始上班接触的第一个项目移动护士站,接到了第一任务就是登录,要用到自动登录功能,所以在这做个记录,以后用的时候直接来粘贴复制,废话少说,直奔主题 先上一下效果图,由于只是实现功能,界面没有美化,见谅 由于xml文件内容,就不展现在这了,自己写一写就好,爸妈再也不用担心我的学习了,so easy package com.sdufe.login; import android.app.Activity; import android.content.Context; import androi

  • Spring security实现记住我下次自动登录功能过程详解

    一.原理分析 第一次登陆时,如果用户勾选了readme选项,登陆成功后springsecurity会生成一个cookie返回给浏览器端,浏览器下次访问时如果携带了这个cookie,springsecurity就会放行这次访问. 二.实现方式 2.1 简单实现方式 (1) 在springsecurity的配置文件中,http节点下增加一个remember-me配置 <security:http auto-config="true" use-expressions="fal

随机推荐

其他