Android数据存储----储存到文件

下面以QQ登陆为案例介绍数据存储,需要提醒的是这是存储到文件里的。


功能:

①打开应用时,会自动去填充输入框的内容。

②登陆时,会有相关的提示。

运行效果:

技术分享


视图页面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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.qqlogin.MainActivity"
    android:orientation="vertical"
     >
    <EditText
        android:id="@+id/qq_userName" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="QQ号\\手机\\邮箱"/>
   <EditText
        android:id="@+id/qq_passWord"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:password="true"
        android:hint="密码"/>
   <CheckBox 
       	android:id="@+id/qq_remenberPWD"
       	android:layout_width="wrap_content"
       	android:layout_height="wrap_content"
       	android:checked="true"
       	android:text="记住密码"/>
   <Button 
        android:id="@+id/qq_loginButtom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登陆"
        />

</LinearLayout>


业务逻辑代码:
package com.example.qqlogin;

import java.util.Map;

import com.example.qqlogin.utils.Utils;

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

public class MainActivity extends Activity implements OnClickListener {

	private EditText userName;
	private EditText passWord;
	private CheckBox checkBox;
	private static String Tag ="MainActivity" ;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		userName = (EditText) findViewById(R.id.qq_userName);
		passWord = (EditText) findViewById(R.id.qq_passWord);
		checkBox = (CheckBox) findViewById(R.id.qq_remenberPWD);
		Button btn  = (Button) findViewById(R.id.qq_loginButtom);
		btn.setOnClickListener(this);
		
		if(Utils.getUAndP()!=null){
			Map<String,String > map = Utils.getUAndP();
			userName.setText(map.get("name"));
			passWord.setText(map.get("passWord"));
		}
	}

	@Override
	public void onClick(View v) {
		//获取内容
		String user = userName.getText().toString();
		String pwd = passWord.getText().toString();
		//判断是否为空
		if(TextUtils.isEmpty(user)||TextUtils.isEmpty(pwd)){
			Toast.makeText(this, "账号密码不为空",Toast.LENGTH_SHORT).show();
			return;
		}
		//判断是否选择记住密码
		if(checkBox.isChecked()){
			if(	Utils.savaUserInfo(user, pwd)){
				Toast.makeText(this, "保存成功", 0).show();
			}
		}
		Toast.makeText(this, "登录成功", 0).show();	
	}
	
}

相关的工具类:

package com.example.qqlogin.utils;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import org.w3c.dom.UserDataHandler;

import android.text.TextUtils;

public class Utils {
	
	public static Boolean savaUserInfo(String userName,String passWord){
		try{
		
			//指定输出的到的文件
			String file = "/data/data/com.example.qqlogin/userNameAndPassword.txt";
			FileOutputStream fos = new FileOutputStream(file);
			
			//写入要读取的内容
			String message = userName+"##"+passWord;
			fos.write(message.getBytes());
			
			//关闭文件流
			fos.flush();
			fos.close();
			return true;
		}catch(Exception e){
			e.printStackTrace();
		}
		return false;
	}

	public static Map<String, String> getUAndP() {
		
		try{
		String file = "/data/data/com.example.qqlogin/userNameAndPassword.txt";
		FileInputStream fis = new FileInputStream(file);
		//以字符对象读入
		BufferedReader  reader = new BufferedReader(new InputStreamReader(fis));
		
		String messages = reader.readLine();
		if(!TextUtils.isEmpty(messages)){
			String[] message = messages.split("##");
			Map<String,String > map = new HashMap<String, String>();
			map.put("name", message[0]);
			map.put("passWord", message[1]);
			return map;
		}
		
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return null;
	}
	
}


这样就OK了!




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。