`
毛驴追飞机
  • 浏览: 16784 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用SharedPreferences实现登录记住密码

阅读更多

SharedPreferences

 SharedPreferences是一种轻型的数据存储方式,本质是基于xml文件存储Key-value的键值对数据,一般用来存储一些简单配置信息。其存储位置在/data/data/<应用包名>/shared_prefs目录下。

实现SharedPreferences存储的步骤如下:

 

1、创建SharedPreferences对象,有两种方式:

 

(1)调用Context对象的getSharedPreferences()方法,通过这种方式获得的SharedPreferences对象可以被统一应用程序下的其他组建共享,也可以指定存储的文件名和操作模式。

SharedPreferences preferences=getSharedPreferences("demo",Context.MODE_PRIVATE);

 

(2)调用Activity对象的getPreferences()方法,这种方式获得的SharedPreferences对象只能在该Activity中使用,只需指定操作模式即可。

 

SharedPreferences preferences=getPreferences(MODE_WORLD_WRITEABLE);

 

 

SharedPreferences有四种操作模式:

Context.MODE_PRIVATE:为默认操作模式,代表文件是私有数据,只能被应用本身访问。在该模式下写入的内容会覆盖源文件的内容。

  Context.MODE_APPEND:检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
  Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取。
  Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。

2、利用edit()方法获取Editor对象。

3、通过Editor对象存储key-value键值对象数据。

4、通过commit()方法提交数据。

 

下面用一个简单的登录案例,来实现SharedPreferences的存储方式。

首先创建布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:background="@drawable/bg"  
    android:orientation="vertical" >  
  
    <RelativeLayout  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content" >  
   
  
        <TextView  
            android:id="@+id/tv_user_name"  
            android:layout_width="wrap_content"  
            android:layout_height="35dip"  
            android:layout_marginLeft="12dip"  
            android:layout_marginTop="10dip"  
            android:gravity="bottom"  
            android:text="用户名:"  
            android:textColor="#000000"  
            android:textSize="18sp" />  
  
        <EditText  
            android:id="@+id/et_user_name"  
            android:layout_width="fill_parent"  
            android:layout_height="40dip"  
            android:layout_below="@id/tv_user_name"  
            android:layout_marginLeft="12dip"  
            android:layout_marginRight="10dip" />  
  
        <TextView  
            android:id="@+id/tv_password"  
            android:layout_width="wrap_content"  
            android:layout_height="35dip"  
            android:layout_below="@id/et_user_name"  
            android:layout_marginLeft="12dip"  
            android:layout_marginTop="10dip"  
            android:gravity="bottom"  
            android:text="密码:"  
            android:textColor="#000000"  
            android:textSize="18sp" />  
  
        <EditText  
            android:id="@+id/et_password"  
            android:layout_width="fill_parent"  
            android:layout_height="40dip"  
            android:layout_below="@id/tv_password"  
            android:layout_marginLeft="12dip"  
            android:layout_marginRight="10dip"  
            android:maxLines="200"  
            android:password="true"  
            android:scrollHorizontally="true" />  
  
        <CheckBox  
            android:id="@+id/cb_password"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_below="@id/et_password"  
            android:layout_marginLeft="12dip"  
            android:text="记住密码"  
            android:textColor="#000000" />  
  
        <Button  
            android:id="@+id/btn_login"  
            android:layout_width="80dip"  
            android:layout_height="40dip"  
            android:layout_below="@id/cb_password"  
            android:layout_alignParentRight="true"  
            android:layout_alignTop="@id/cb_password"  
            android:layout_marginRight="10dip"  
            android:gravity="center"  
            android:text="登录"  
            android:textColor="#000000"  
            android:textSize="18sp"/>  
  
          
    </RelativeLayout>  
      
      
  
</LinearLayout>

 创建Activity

package com.example.logindemo;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.Toast;

/**
 * 
 * @author hx
 * @version create 2014-11-24 19:30
 *
 */
public class MainActivity extends Activity {

	private EditText userName;
	private EditText password;
	private CheckBox rem_password;
	private Button bt_login;
	private String userNameValue;
	private String passwordValue;
	private SharedPreferences sp;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//创建对象,userInfo表示信息存储的文件名,安卓会默认添加.xml后缀名
		sp = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
		userName = (EditText) findViewById(R.id.et_user_name);
		password = (EditText) findViewById(R.id.et_password);
		rem_password = (CheckBox) findViewById(R.id.cb_password);
		bt_login = (Button) findViewById(R.id.btn_login);
		
		//判断记住密码状态
		if(sp.getBoolean("ISCHECK", false)){
			userName.setText(sp.getString("USER_NAME", ""));
			password.setText(sp.getString("PASSWORD", ""));
		}
		
		//添加记录密码复选框更改事件
		rem_password.setOnCheckedChangeListener(new OnCheckedChangeListener(){

			@Override
			public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
				// TODO Auto-generated method stub
				if(rem_password.isChecked()){
					Editor editor = sp.edit();
					editor.putBoolean("ISCHECK", true);
					editor.commit();
				}else{
					Editor editor = sp.edit();
					editor.putBoolean("ISCHECK", false);
					editor.commit();
				}
			}
			});
		
		//添加登录按钮事件
		bt_login.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				userNameValue = userName.getText().toString();
				passwordValue = password.getText().toString();
				
				if(userNameValue.equals("admin") && passwordValue.equals("123456")){
					Toast.makeText(MainActivity.this,"登录成功", Toast.LENGTH_SHORT).show();  
					//记录密码操作
					if(rem_password.isChecked()){
						Editor editor = sp.edit();
						editor.putString("USER_NAME", userNameValue);
						editor.putString("PASSWORD", passwordValue);
						editor.commit();
					}
				}else{
					Toast.makeText(MainActivity.this,"登录失败", Toast.LENGTH_SHORT).show();  
				}
			}
			});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

 运行完,通过eclipse的File Explorer查看文件。如果遇到无法查看的情况,注意观察该文件夹的权限。

分享到:
评论

相关推荐

    用SharedPreferences实现登录时记住密码功能

    在Android应用开发中,用户登录体验是至...综上所述,通过SharedPreferences,我们可以轻松实现登录时的“记住密码”功能,为用户提供更便捷的体验。同时,需要注意数据安全和隐私保护,确保应用的稳健性和用户满意度。

    Android通过SharedPreferences实现自动登录记住用户名和密码功能

    最近Android项目需要一个自动登录功能,完成之后,特总结一下,此功能依靠SharedPreferences进行实现。 SharedPreferences简介 ...SharedPreferences使用实例:记住用户名密码自动登录 大致了解了SharedPre

    Android数据存储——SharedPreferences(登入记住密码)

    二、使用SharedPreferences实现记住密码功能 1. 创建SharedPreferences实例 在Android中,我们通常在Activity或Fragment中使用SharedPreferences。首先,我们需要获取到SharedPreferences实例。这可以通过以下代码...

    android studio 利用SharedPreferences实现自动登录

    在这个“android studio 利用SharedPreferences实现自动登录”的主题中,我们将深入探讨如何利用SharedPreferences来实现用户登录状态的持久化,以便用户在下次打开应用时能够自动登录。 首先,我们需要理解...

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

    实现记住密码的功能可以提高用户体验,减少用户的登录时间,提高应用程序的使用率。 七、实现记住密码的注意事项 在实现记住密码的功能时,需要注意安全问题,例如使用加密存储用户名和密码,避免用户名和密码泄露...

    Android案例:登录界面,记住登录密码。利用数据存储SharedPreferences

    利用数据存储的SharedPreferences开发技术,实现了一个简易的登录界面,可以记住登录密码等。

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

    要实现记住密码的功能,开发者通常会在用户选择“记住密码”选项时,将用户名和加密后的密码保存到SharedPreferences中。加密是必要的,以保护用户的隐私。使用`edit()`方法创建一个编辑器,然后调用`putString()`...

    Android中使用SharedPreferences完成记住账号密码的功能

    在用户点击登录按钮并选择“记住密码”时,我们可以使用SharedPreferences的编辑器(Editor)将这些信息存入本地: ```java Editor edit = config.edit(); edit.putString("username", username); edit.putString(...

    SharedPreferences记住用户名密码

    另外,为保护用户隐私,还应提供一个选项,让用户可以选择是否记住密码。 6. **清除记住的用户名和密码**:在用户选择清除登录信息或退出账户时,需要删除SharedPreferences中对应的键值。这可以通过Editor对象的...

    Android中使用SharedPreferences完成记住密码项目的任务要求.pdf

    综上所述,SharedPreferences在Android中是实现记住密码功能的一个简单而有效的方式。通过它,我们可以轻松地保存和恢复用户的偏好设置,提高用户体验。在实际开发中,还需要考虑到数据安全和隐私保护,确保用户信息...

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

    综上所述,“Android记住密码和自动登录实现”主要是通过SharedPreferences存储用户登录凭证,以及使用CookieManager处理服务器返回的Cookie来实现。在实际应用中,还需要考虑安全性、隐私政策以及不同网络环境下的...

    Android中使用SharedPreferences保存密码(简洁版)的代码清单.pdf

    总结起来,这个代码清单演示了如何在Android应用中使用SharedPreferences来实现记住密码的功能。用户在登录时输入的账号和密码会根据复选框的状态被保存或清除。这是一种常见的用户交互方式,提高了用户体验,尤其是...

    android studio 第五章课后实践(实现登录界面设计、记住密码操作)

    接下来,我们讨论如何实现记住密码的功能。这个功能涉及到SharedPreferences,它是Android系统提供的轻量级数据存储方案,适合保存用户首选项或简单数据。 1. 在LoginActivity的onCreate()方法中,首先获取...

    Android中使用SharedPreferences记住密码的代码清单.pdf

    本文将详细解释如何使用SharedPreferences在Android中实现记住密码的功能。 首先,我们需要在`MainActivity`类中初始化SharedPreferences对象和其他相关控件。在`onCreate()`方法中,我们调用`getSharedPreferences...

    android 实现登陆界面的记住密码源码

    下面我们将详细解释如何使用`SharedPreferences`来实现记住密码功能: 1. **创建SharedPreferences对象**: 首先,在登录界面的代码中,我们需要创建一个`SharedPreferences`对象。这通常在登录按钮的点击事件处理...

    Android sharedPreferences实现记住密码功能

    * 如何使用SharedPreferences实现记住密码功能? 可以使用SharedPreferences对象来存储用户名和密码,然后在下次登录时获取存储的用户名和密码。 * 如何获取SharedPreferences对象? 可以使用getSharedPreferences...

    Android自动登录及记住密码

    在Android应用开发中,实现自动登录和记住密码功能是提高用户体验的重要一环。这个功能使得用户在下次打开应用时无需每次都输入账号和密码,极大地节省了用户的时间。下面将详细介绍如何在Android环境中实现这一功能...

Global site tag (gtag.js) - Google Analytics