android基础(7):数据存储和访问

设计界面:

<LinearLayoutxmlns: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"

tools:context=".MainActivity" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="请输入用户名" />

<EditText

android:id="@+id/et_username"

android:layout_width="match_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="match_parent"

android:layout_height="wrap_content"

android:inputType="textPassword"

/>

<RelativeLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

<CheckBox

android:id="@+id/cb_rember_pwd"

android:checked="true"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="记住密码"

/>

<Button

android:layout_alignParentRight="true"

android:onClick="login"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="登陆"

></Button>

</RelativeLayout>

</LinearLayout>

编写数据处理方法:

package com.cloud.login.Service;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.util.HashMap;

import java.util.Map;

import android.content.Context;

public class LoginService {

/**

* 保存用户名密码的业务方法

* @param context

* @param username

* @param password

* @return

*/

public static boolean saveUserInfo(Context context,String username,String password){

try {

//File file=newFile("/data/data/com.cloud.login/info.txt");

//context.getFilesDir();//返回一个目录

File file=newFile(context.getFilesDir(),"info.txt");

FileOutputStreamfos=new FileOutputStream(file);

fos.write((username+"##"+password).getBytes());

fos.close();

return true;

} catch (Exception e) {

// TODOAuto-generated catch block

e.printStackTrace();

return false;

}

}

//这里可以设置文件的访问权限

/*

public static boolean saveUserInfo(Context context, Stringusername,String password,

int mode){

try {

//File file=newFile("/data/data/com.cloud.login/info.txt");

//context.getFilesDir();//返回一个目录

FileOutputStream fos=null;

//=context.openFileOutput("private.txt",context.MODE_PRIVATE);

//File file=newFile(context.getFilesDir(),"info.txt");

//FileOutputStream fos=newFileOutputStream(file);

switch (mode) {

case 1:

fos=context.openFileOutput("private.txt",context.MODE_PRIVATE);

break;

case 2:

fos=context.openFileOutput("private.txt",context.MODE_WORLD_READABLE);

break;

case 3:

fos=context.openFileOutput("private.txt",context.MODE_WORLD_WRITEABLE);

break;

case 4:

fos=context.openFileOutput("private.txt",context.MODE_WORLD_READABLE+

context.MODE_WORLD_WRITEABLE);

break;

}

fos.write((username+"##"+password).getBytes());

fos.close();

return true;

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

return false;

}

}

*/

/**

* 获取保存的数据

* @param context

* @return

*/

publicstatic Map<String,String> getSaveUserInfo(Context context){

Filefile=new File(context.getFilesDir(),"info.txt");

try{

FileInputStreamfis=new FileInputStream(file);

BufferedReaderbr=new BufferedReader(new InputStreamReader(fis));

Stringstr=br.readLine();

String[]infos=str.split("##");

Map<String,String>map=new HashMap<String, String>();

map.put("username",infos[0]);

map.put("password",infos[1]);

returnmap;

}catch (Exception e) {

//TODO Auto-generated catch block

e.printStackTrace();

returnnull;

}

}

}

MainActivity.java代码

package com.cloud.login;

import java.util.Map;

import com.cloud.login.Service.LoginService;

import android.os.Bundle;

import android.app.Activity;

import android.text.TextUtils;

import android.util.Log;

import android.view.View;

import android.widget.CheckBox;

import android.widget.EditText;

import android.widget.Toast;

public
class
MainActivity extends Activity {

private
static final
String tag =
"MainActivity";

private EditText
et_username;

private EditText
et_password;

private CheckBox
cb;

@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);

cb=(CheckBox) findViewById(R.id.cb_rember_pwd);

//检查是否有保存用户名和密码,如果有这回显

Map<String, String> map=LoginService.getSaveUserInfo(this);

if(map!=null){

et_username.setText(map.get("username"));

et_password.setText(map.get("password"));

}

}

//登陆按钮的点击事件

public
void
login(View view){

String username=et_username.getText().toString().trim();

String password=et_password.getText().toString().trim();

if(TextUtils.isEmpty(username)||TextUtils.isEmpty(password)){

Toast.makeText(this,
"用户名或者密码为空!", Toast.LENGTH_SHORT).show();

}

else{

//判断是否保存密码

if(cb.isChecked()){

//保存用户名和密码

Log.i(tag,
"需要保存用户名和密码!");

/*

//判断访问类型

booleanresult=false;

intid=rg_mode.getCheckedRadioButtonId();

switch(id) {

caseR.id.rd_private:

result=LoginService.saveUserInfo(this,username, password,1);

break;

caseR.id.rd_readable:

result=LoginService.saveUserInfo(this,username, password,2);

break;

caseR.id.rd_writeable:

result=LoginService.saveUserInfo(this,username, password,3);

break;

caseR.id.rd_public:

result=LoginService.saveUserInfo(this,username, password,4);

break;

default:

break;

}

*/

boolean result=LoginService.saveUserInfo(this,username,password);

if(result){

Toast.makeText(this,
"信息保存成功!", Toast.LENGTH_SHORT).show();

}

}

//验证用户名和密码是否正确

if("spring".equals(username)&&"123".equals(password)){

Toast.makeText(this,
"登陆成功!", Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(this,
"登陆失败!", Toast.LENGTH_SHORT).show();

}

}

}

}

版权声明:博主原创文章,转载请说明出处。http://blog.csdn.net/dzy21

时间: 2024-07-31 22:10:46

android基础(7):数据存储和访问的相关文章

Android下的数据存储与访问(1) --- 以文件的形式

Android下的数据存储与访问(1) --- 以文件的形式 1.1 储存文件存放在手机内存中: // *** 储存数据到 /data/data/包名/files/jxn.txt文件中 String data = "test"; // /data/data/包名/files File filesDir = context.getFilesDir(); File file = new File(filesDir, "jxn.txt"); FileOutputStrea

Android 测试、数据存储与访问、XML解析与生成

1.android测试 1.黑盒测试: 是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的. 2. 白盒测试: 又称结构测试.透明盒测试.逻辑驱动测试或基于代码的测试. 3.单元测试: 又称模块测试,是开发者编写的一小段代码,用于检验被测代码的一个很小的.很明确的功能是否正确. 4.功能测试: 根据产品特性.操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求. 5.压力测试: 主体向被观察者布置一定量任务和作业,借以观察个体完成任务的行为. 6.集成测试: 是单元

Android学习笔记 --- 数据存储与访问 (File,sdcard,sharedpreferences,sqlite)

一.使用文件进行数据存储 1.context.openFileOutput()方法  写入文件内容 在上下文context中 openFileOutput方法可以用于把数据输出到文件中 示例代码: public static void fileStorage(Context context){ try { FileOutputStream fos = context.openFileOutput("filedata.txt", context.MODE_PRIVATE); fos.wr

android(9)_数据存储与访问3_scard简介

使用Activity的openFileOutput()方法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大,存放些小文件还行,如果要存放像视频这样的大文件,是不可行的.对于像视频这样的大文件,我们可以把它存放在SDCard. SDCard是干什么的?你可以把它看作是移动硬盘或U盘. 在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件). 创建SDCard可以在Eclipse创建模拟器时随同创建,也可以使用DOS命令进行创建,如下: 在D

Android中的数据存储

Android中的数据存储主要分为三种基本方法: 1.利用shared preferences存储一些轻量级的键值对数据. 2.传统文件系统. 3.利用SQLite的数据库管理系统. 对SharedPreferences对象和SQLite数据库,它们的数据仅对创建它们的应用是可访问的. (比如,MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE现在(since API 17)已经被标记为deprecated). 换句话说,它们不是共享的,如果需要在不同的应用之间

Android Learning:数据存储方案归纳与总结

前言 最近在学习<第一行android代码>和<疯狂android讲义>,我的感触是Android应用的本质其实就是数据的处理,包括数据的接收,存储,处理以及显示,我想针对这几环分别写一篇博客,记得我的学习心得,也希望跟各位新手同学相互努力促进.今天这篇博客,我想介绍一下数据的存储,因为数据的接收,存储,处理以及显示这几环环环相扣,而数据的存储直接关系到数据的处理和显示,所以显得尤为重要. 所以本文针对数据存储的常见方案和其使用进行了归纳.分为程序内存储和程序间数据访问,程序内存储

67.Android中的数据存储总结

转载:http://mp.weixin.qq.com/s?__biz=MzIzMjE1Njg4Mw==&mid=2650117688&idx=1&sn=d6c73f9f04d02ede7a741b45e801d74e#rd 本篇文章会帮助大家快速了解Android中各种数据存储机制的应用场景以及基本使用方法,力求在头脑中建立一个“目录”.有了这个目录,具体使用细节在实际应用时再查询文档即可得到. 0. 概述 Android为我们提供了以下存储机制: Shared Preferenc

Android开发实践 数据存储

所有应用程序必然有数据的输入输出,Android也是一样的,Android应用程序的参数设置.运行状态数据这些都需要保存到外部存储器上,保证关机后数据不丢失,如下是几种Android常见的数据存储方式: SharedPreferences:适合保存少量数据(一些配置信息.积分之类): SQLite:一个真正轻量级数据库,没有后台进程,整个数据库就对应于一个文件,适合大量数据需要存储.访问的情况. 下来详细来看看它们的用法. 1.SharedPreferences SharedPreference

Android入门笔记 - 数据存储 - SharedPreferences

接下来四篇我们来介绍Android中用于数据存储的四种方式: SharedPreferences Sqlite Files 网络 今天我们先来看一个最简单的:SharedPreferences. 这种数据存储方式是最简单,最轻便,也最实用的,但是只能用来储存基本数据类型.我们来看看怎么使用: 1. res/ layout/ activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/an

我的全栈之路-Java基础之数据存储

我的全栈之路-Java基础之数据存储 我的全栈之路 2.1 标识符 标识符是在程序开发时给包,类.接口.注解,变量,方法命名的字符序列. 标识符在命名时需要遵守相关的规则和规范: 标识符的命名规则: 标识符不能是Java的关键字和保留字,关键字是Java中被赋予赋予特殊含义的单词,例如public static void等等.保留字是现有Java版本尚未使用,但是未来的Java版本可能会做关键字使用的单词,例如goto,const.但是可以包含关键字,保留字. 标识符可以由字母.数字.下划线组成