android——数据储存

在android应用程序开发的过程中,我们经常会遇到数据存取之类的问题,现在我就与大家分享一下我的经验!
现在我们要制作一个登录界面,其包括的功能:存储用户信息、如果勾选记住密码,会在登录之前保存 用户名密码到应用程序 /files/info.txt文件中.
正确的用户名和密码是:bmcq 123。
储存格式为:用户名##密码.

多话不说,来贴代码

antivity_main.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"
    tools:context="com.bmcq.login.MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请输入用户名" />
     <EditText
        android:id="@+id/et_user_name"
        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:inputType="textPassword"
        android:id="@+id/et_user_pwd"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

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

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

          <Button
        android:onClick="login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="登录"/>

          </RelativeLayout>


</LinearLayout>

Java代码.
MainActicity.java

package com.bmcq.login;

import java.util.Map;


import com.bmcq.login.serve.loginServes;

import android.R.string;
import android.support.v7.app.ActionBarActivity;
import android.text.TextUtils;
import android.util.Log;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {
    private static final String TAG = "MainActivity";
    private EditText et_user_name;
    private EditText et_user_pwd;
    private CheckBox cb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_user_name = (EditText)findViewById(R.id.et_user_name);
        et_user_pwd = (EditText)findViewById(R.id.et_user_pwd);
        cb = (CheckBox)findViewById(R.id.cb_remember_pwd);
         //检查是否有保存的用户名及密码数据 
        Map<String, String> map = loginServes.getSavedUserInfo(this);
        if (map!=null)
        {
            et_user_name.setText(map.get("user_name"));
            et_user_pwd.setText(map.get("user_pwd"));
        }

    }
public void login(View v)
{ 
    String name = et_user_name.getText().toString().trim() ;
    String password = et_user_pwd.getText().toString().trim();
    if (TextUtils.isEmpty(name)||TextUtils.isEmpty(password))
    {
        Toast.makeText(this, "登录名或用户密码不能为空", 1).show();
    }
    else
    {
        if (cb.isChecked())//判断是否保存密码
        {
            Log.i(TAG,"需要保存密码。");
            Boolean result = loginServes.SaveUserInfo(this,name, password) ;

            if (result)
            {
                Toast.makeText(this, "保存用户信息成功", 0).show();
            }

        }
        if("bmcq".equals(name)&&"123".equals(password))
        {
            Toast.makeText(this, "登陆成功", 0).show();
        }
        else {
            Toast.makeText(this, "登录名或用户密码错误", 1).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;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

loginserves.java

package com.bmcq.login.serve;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.net.ContentHandler;
import java.nio.MappedByteBuffer;
import java.util.HashMap;
import java.util.Map;

import android.R.string;
import android.content.Context;

public class loginServes {

    /*
     * 保存用户名和密码的业务方法
     * @param user_name 用户名
     * @param password 用户密码
     *@ return true保存成功 false 保存失败
     *@ getFileDire() /data/data/com.bmcq.login/File
     *@ getCacheDir() /data/data/com.bmcq.login/Cache
     */

    public static  Boolean SaveUserInfo(Context context,String user_name,String user_pwd)
    {
        File file = new File(context.getFilesDir(),"info.txt");
        try {
            FileOutputStream fos = new FileOutputStream(file);
            fos.write((user_name+"##"+user_pwd).getBytes());
            fos.close();
            return true;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            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(); 
            //bmcq##123
            String[] infos = str.split("##");
            Map<String, String> map = new HashMap<String, String>();
            map.put("user_name", infos[0]);
            map.put("user_pwd", infos[1]);  
            return map;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }


}

运行结果如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值