android——数据储存

xiaoxiao2021-02-28  100

在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; } } }

运行结果如下:

转载请注明原文地址: https://www.6miu.com/read-36499.html

最新回复(0)