Android登录案列(存储在SD卡上)

本文介绍Android经典的登录案列,需要的朋友可以参考一下

首先,画布局

Activity_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=".MainActivity" >
<EditText
android:id="@+id/et_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名" />
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:password="true"
android:hint="请输入密码" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp" >
<CheckBox
android:id="@+id/cb_ischeck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住用户名密码" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:id="@+id/btn_login"
android:onClick="login"
android:text="登录" />
</RelativeLayout>
</LinearLayout>

根据UI写对应的业务逻辑

MainActivity.java中


package com.example.login;

import java.util.Map;

import android.os.Bundle;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
@SuppressLint("ShowToast") public class MainActivity extends Activity {
EditText et_username,et_password;
CheckBox cb_ischeck;
Button btn_login;
@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_ischeck = (CheckBox) findViewById(R.id.cb_ischeck);
btn_login = (Button) findViewById(R.id.btn_login);

//读取data/...下info.txt信息
Map<String,String> maps = UserInfoUtils.readInfo();
if(maps != null){
String name = maps.get("name");
String pwd = maps.get("pwd");
et_username.setText(name);
et_password.setText(pwd);
}

}
public void login(View v){
String name = et_username.getText().toString().trim();
String pwd = et_password.getText().toString().trim();
if(TextUtils.isEmpty(name)||TextUtils.isEmpty(pwd)){
Toast.makeText(MainActivity.this, "用户名或密码不能为空", 1).show();
}else{
//Toast.makeText(MainActivity.this, "登录成功!!", 1).show();
if(cb_ischeck.isChecked()){
boolean result = UserInfoUtils.saveInfo(name, pwd);
if(result){
Toast.makeText(MainActivity.this, "保存成功!!", 0).show();
}else{
Toast.makeText(MainActivity.this, "保存失败!!", 0).show();
}
}else{
Toast.makeText(MainActivity.this, "请勾选记住密码!!", 1).show();
}
}

}
}

同一个包创建的类UserInfoUtils.java

package com.example.login;
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.util.HashMap;
import java.util.Map;
public class UserInfoUtils {

//保存用户名和密码的业务方法
public static boolean saveInfo(String username,String pwd){
String result = username + "##" + pwd;
//创建file类指定我们要把数据存储的位置
File file = new File("data/data/com.example.login/info.txt");
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(result.getBytes());
fos.close();
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
//读取用户的信息
public static Map<String,String> readInfo() {
// TODO Auto-generated method stub
Map<String,String> maps = new HashMap<String, String>();
File file = new File("data/data/com.example.login/info.txt");
try {
FileInputStream fis = new FileInputStream(file);
BufferedReader buff = new BufferedReader(new InputStreamReader(fis));
String content = buff.readLine(); //读取数据

//切割字符串封装到map集合中
String[] splits = content.split("##");
String name = splits[0];
String pwd = splits[1];
maps.put("name", name);
maps.put("pwd", pwd);
fis.close();

return maps;

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}

}
}

注意

在清单文件中加上android.permission.WRITE_EXTERNAL_STORAGE权限



本文标题:Android登录案列(存储在SD卡上)

文章作者:Kebin.Wang

发布时间:2018年06月02日 - 00:06

原始链接:https://yyping.top/android_01/

许可协议: 署名-非商业性使用-禁止演绎 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!

分享到: