`

android-数据存储(保存读取密码-附源码)

阅读更多

android-loginview.png

功能要求 用户名zhangsan 密码 123  为正确登录状态

如果勾选记住密码  会在登录之前保存 用户名密码到应用程序 /files/infx.txt文件中

存储格式为  用户名##密码

 

接下来 xml  代码

 

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请输入用户名" />

    <EditText
        android:id="@+id/et_username"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请输入密码 " />

    <EditText
        android:id="@+id/et_password"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <CheckBox
            android:id="@+id/check"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="记住密码" />

        <Button
            android:id="@+id/login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:text="登录" />
    </RelativeLayout>

</LinearLayout>


 

接下来是mainactivity 代码

 

 

 

 

 

package com.liwei.loginview;

import java.util.HashMap;
import java.util.Map;

import com.liwei.loginview.services.LoginService;

import android.os.Bundle;
import android.app.Activity;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Checkable;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
	private EditText et_username;//用户名
	private EditText et_password;//密码
	private CheckBox ch;//check
	private Button button;//登录按钮

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		et_username = (EditText) findViewById(R.id.et_username);
		et_password = (EditText) findViewById(R.id.et_password);
		ch = (CheckBox) findViewById(R.id.check);
		button = (Button) findViewById(R.id.login);
//判断 是否有保存记录  如果不为空的话 取出显示到界面上
		Map<String, String> map = new HashMap<String, String>();
		map = LoginService.getSavedUserInfo(this);
		if (map != null) {

			et_username.setText(map.get("username"));
			et_password.setText(map.get("password"));
		}
		
		
		button.setOnClickListener(this);

		// 检查是否有保存的用户名密码 如果有 显示出来

	}

	@Override
	public void onClick(View v) {
		String name = et_username.getText().toString();
		String pwd = et_password.getText().toString();

		if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
			Toast.makeText(this, "用户名密码不能为空", Toast.LENGTH_SHORT).show();
		} else {
			// 判断是否保存密码
			if (ch.isChecked()) {
				// 保存用户密码
				boolean ruslt = LoginService.saveUserInfo(this, name, pwd);
				if (ruslt) {
					Log.i("TAG", "保存成功");
				}
				Log.i("TAG", "保存密码成功");
				Toast.makeText(this, "保存密码成功", Toast.LENGTH_SHORT).show();
			}

			if ("zhangsan".equals(name) && "123".equals(pwd)) {
				Log.i("TAG", "登陆成功");
				Toast.makeText(this, "登陆成功", Toast.LENGTH_SHORT).show();
			} else {
				Log.i("TAG", "登陆失败");
				Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show();
			}
		}

	}

}

 

保存文件 读取文件业务方法

 

package com.liwei.loginview.services;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.Buffer;
import java.util.HashMap;
import java.util.Map;

import android.content.Context;

public class LoginService {
	// 没有使用任何类的成员变量 建议使用静态方法
	public static boolean saveUserInfo(Context context, String username,
			String password) {

		try {
			// File file = new File("/data/data/com.liwei.loginview/info.txt");  

			File file = new File(context.getFilesDir(), "info.txt"); //获取路径 如 "/data/data/com.liwei.loginview/files / 创建文件  info.txt 
			// context.getFilesDir();//返回一个目录/data/data/com.liwei.loginview+
			// files
			FileOutputStream fos = new FileOutputStream(file);
			// zhangsan ## 123
			fos.write((username + "##" + password).getBytes());
			return true;
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return false;
		} catch (IOException e) {

			e.printStackTrace();
			return false;
		}

	}

	public static Map<String, String> getSavedUserInfo(Context context) {
		File file = new File(context.getFilesDir(), "info.txt");
		try {
			FileInputStream fis = new FileInputStream(file);
			BufferedReader br = new BufferedReader(new InputStreamReader(fis));
			String str = br.readLine();
			String[] infos = str.split("##");
			Map<String, String> map = new HashMap<String, String>();
			map.put("username", infos[0]);
			map.put("password", infos[1]);
			return map;
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return null;
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}

 

 接下来附上源代码 loginview.zip 

 

  • 大小: 9.1 KB
0
0
分享到:
评论

相关推荐

    android-Camera2Basic-master源码

    5. **处理图像**:`ImageReader`的`onImageAvailable`回调中,读取图像数据,通过`ImageSaver`保存到文件系统。 五、源码中的优化与注意事项 1. **权限管理**:确保在运行时获取了`Manifest.permission.CAMERA`...

    老罗android视频开发源码和ppt--android存储数据和文件.rar

    "老罗android视频开发源码和ppt--android存储数据和文件.rar"这个压缩包提供的是关于Android数据存储和文件操作的教学资源,包括视频课程和PPT讲义,由知名的Android讲师罗升阳(老罗)编撰。 首先,我们来看一下...

    Android应用源码之数据的储存与读取.zip

    在Android应用开发中,数据的储存与读取是不可或缺的一部分,它涉及到应用程序的状态保存、用户数据持久化以及应用间的数据共享。本资料包主要探讨了Android中如何进行数据存储,包括基本的文件存储、...

    Android应用数据的储存与读取_安卓源码.zip

    在Android应用开发中,数据的储存与读取是不可或缺的一部分,它涉及到用户数据持久化、应用状态保存等关键功能。本教程将详细讲解Android中常见的数据存储方式,并通过提供的源码进行实例解析。 1. ...

    android-smart-image-view.zip

    在优化方面,`android-smart-image-view`支持图片的缓存机制,可以将加载过的图片存储在内存或磁盘中,下次加载时直接从缓存读取,显著提高加载速度。此外,还可以通过设置加载策略,如优先从网络加载还是本地缓存...

    android-database-sqlcipher-v3.5.7 Android安卓数据库加密开源项目

    3. **数据读取**:读取数据时,SqlCipher会解密从磁盘中读取的数据,再返回给应用程序。 4. **安全性**:由于加密过程完全透明,开发者无需更改数据库操作逻辑,这使得SqlCipher易于集成到现有项目中。 **二、...

    Android高级应用源码-android-gif-drawable 支持fig显示的view.zip

    `GifDecoder`类负责GIF数据的解码,它实现了`GifHeaderParser`接口,通过读取字节流来解析GIF头部信息,确定GIF的尺寸、帧数等属性,并解析出每一帧的图像数据。 2. 帧缓存管理: `GifFrameCache`用于管理GIF帧的...

    Android高级应用源码-安卓读取Excel文件获取表格数据.rar

    本项目“Android高级应用源码-安卓读取Excel文件获取表格数据”提供了这样的功能,让开发者能够轻松地在Android应用中集成Excel数据处理。下面我们将详细探讨这个主题,了解如何在Android应用中实现这一功能。 首先...

    Android 一个读取和显示pdf文件的库 源码

    本篇文章将详细讲解基于Android的一个开源库——Android-Pdf-Viewer-Library,它是一个用于在Android设备上查看PDF文档的源码库。 Android-Pdf-Viewer-Library是由James Blough开发的,它提供了方便的API接口,让...

    android-database-sqlcipher-master.zip

    通过对“android-database-sqlcipher-master”的源码学习,开发者不仅可以理解SQLCipher的工作原理,还能掌握如何在Android应用中安全地存储和管理敏感数据,提升应用的整体安全性。在实际项目中,这将有助于构建更...

    android-lockpattern v3的源码

    是另一个关键类,它与系统的设置和数据库交互,保存和读取用户的解锁模式。当用户完成绘制图案后,LockPatternUtils会将新图案存储到设备的首选项中,通常位于`/data/data/...

    android数据存储集锦源码

    本资源“android数据存储集锦源码”提供了一个全面的示例,帮助开发者深入了解和实践Android平台上的各种数据存储方式。下面我们将详细探讨其中涉及的主要知识点。 首先,Android提供了多种数据存储方式,包括...

    android-NFC 读取银行卡 visa 等国外银行卡源码demo

    本示例"android-NFC 读取银行卡 visa 等国外银行卡源码demo"是针对如何利用Android NFC功能读取包括Visa在内的国际银行卡信息的一个实际操作演示。通过分析这个源码,我们可以深入理解Android NFC API的使用方法以及...

    Android-Pdf-Viewer-Library.zip

    5. **权限请求**:查看和操作PDF可能需要读取存储权限,开发者需要检查并确保在应用中正确请求这些权限。 6. **集成步骤**:为了将此库集成到自己的项目中,开发者需要按照库提供的指南进行操作,这可能包括添加...

    android-Google官方nfc读卡源码

    Google官方nfc读卡源码是一个用于解析和处理NFC标签数据的项目,已经转化为适用于Android Studio的开发环境。这个源码库可以帮助开发者深入理解NFC的工作原理,并学习如何在自己的应用中集成NFC功能。 1. NFC基础 ...

    安卓Android源码——数据的储存与读取.zip

    本资料包"安卓Android源码——数据的储存与读取.zip"可能包含了一些关于如何在Android平台上存储和检索数据的示例代码和讲解,这将帮助开发者更好地理解这一核心概念。 在Android中,有多种数据存储方式,每种都有...

    Android高级应用源码-Gallery相册浏览.rar

    这个"Android高级应用源码-Gallery相册浏览"项目,提供了一个很好的学习实例,帮助开发者理解如何实现一个功能丰富的图片浏览器。下面将详细解析这个项目的相关知识点。 1. **图片加载库**: - 相册浏览通常涉及到...

    android-async-http-master源码

    本文将深入探讨该库的核心源码,帮助读者理解其内部机制,提升Android网络编程的能力。 一、项目结构解析 Android-Async-HttpClient的项目结构清晰,主要分为以下几个模块: 1. `library`:核心库,包含网络请求...

    Android-Prefekt是Kotlin的AndroidSharedPreferences库

    在Android应用开发中,SharedPreferences是保存轻量级数据的一个常用机制,它允许开发者存储和读取简单的键值对,如布尔值、整数、浮点数、字符串等。`Android-Prefekt`是一个专为Kotlin设计的Android ...

Global site tag (gtag.js) - Google Analytics