Android文件内部存储

创建一个Android应用程序。当分别输入用户名"admin"与密码"123", 并点击“登录”按钮,则进入第二个窗体BActivity。(如果用户名或密码不输入“admin”或“123”,则提示出错)

如果点击了“保存密码”复选按钮,并点击“登录”按钮,则也是进入上面右边第二个窗体,同时把用户名与密码写入内部存储器,如保存至文件 data.txt。此时,把系统退掉之后重新打开 该应用,则系统直接跳过用户名与密码输入界面,直接进入第二个窗体,并显示上次登陆时间时间。在第二个窗体中,如果点击“取消自动登陆”,则删除文件 data.txt,则当 该应用重新启动时,则重新进入第一个窗体等待用户名与密码的输入。

第一个窗体:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    tools:context="com.zhku.exp5_2.MainActivity">
    <EditText
        android:id="@+id/username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="用户名(admin)"
        android:textSize="20sp"
        android:singleLine="true"/>
    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="密码(123)"
        android:textSize="20sp"
        android:singleLine="true"/>
    <CheckBox
        android:id="@+id/checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="保存密码"
        android:textSize="20sp"/>
    <Button
        android:id="@+id/login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登录"
        android:textSize="20sp" />
</LinearLayout>




package com.zhku.exp5_2;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Toast;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MainActivity extends AppCompatActivity {
    private EditText username;
    private EditText password;
    private CheckBox checkbox;
    private Button login;
    private String loginTime;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //时间转换
        SimpleDateFormat loginTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        final String date = loginTime.format(new Date()); //现在时间

        File file = new File(getFilesDir().getParent()+"/files/data.txt");
        if(file.exists()){
            //跳转界面
            Intent it = new Intent(MainActivity.this, BActivity.class);
            Bundle bundle = new Bundle();
            bundle.putString("loginTime", date);
            it.putExtras(bundle);
            startActivity(it);
        }
        setContentView(R.layout.activity_main);

        username = (EditText) findViewById(R.id.username);
        password = (EditText) findViewById(R.id.password);
        checkbox = (CheckBox) findViewById(R.id.checkbox);
        login = (Button) findViewById(R.id.login);

        String name = username.getText().toString().trim();
        String psw = password.getText().toString().trim();

        //登录点击事件
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = username.getText().toString().trim();
                String psw = password.getText().toString().trim();

                if (name.equals("admin") && psw.equals("123")
                        || checkbox.isChecked() && name.equals("admin") && psw.equals("123")) {
                    Intent it = new Intent(MainActivity.this, BActivity.class);
                    Bundle bundle = new Bundle();
                    it.putExtras(bundle);
                    startActivity(it);
                    finish();
                } else {
                    Toast.makeText(MainActivity.this, "用户名或密码出错", Toast.LENGTH_SHORT).show();
                }
            }
        });

        checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (checkbox.isChecked()) {
                    String name = username.getText().toString().trim();
                    String psw = password.getText().toString().trim();
                    //时间转换
                    SimpleDateFormat loginTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                    String date = loginTime.format(new Date()); //现在时间
                    saveUserInfoFile(name,psw,date);
                    System.out.println("已记住密码");
                    if (checkbox.isChecked()){
                        checkbox.setChecked(true);
                    }
                    else {
                        checkbox.setChecked(false);
                    }

                }
            }
        });
    }
    //获取信息,写入
    private void getUserFromFile() {
        String con;
        String file_name = "data.txt";
        FileInputStream fis;
        try {
            fis = openFileInput(file_name);
            byte[] bf = new byte[fis.available()];
            fis.read(bf);
            fis.close();
            con = new String(bf);//读出内容
            String[] data = con.split(",");
            //获取用户输入的用户名密码
            username.setText(data[0]);
            password.setText(data[1]);
            loginTime = data[2];


        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //保存数据,读出
    private boolean saveUserInfoFile(String username, String password, String time) {
        String filename = "data.txt";
        String content = username + "," + password + "," + time;
        FileOutputStream fos;  //写入用户名,密码
        try {
            fos = openFileOutput(filename, MODE_PRIVATE);
            fos.write(content.getBytes());
            fos.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
}


第二个窗体:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    tools:context="com.zhku.exp5_2.BActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="我是登录成功后的窗口"
        android:textSize="30sp"
        android:textColor="#000000"/>
    <TextView
        android:id="@+id/show"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:textSize="15sp"/>
    <Button
        android:id="@+id/cacel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="取消自动登录"
        android:textSize="20sp"/>
</LinearLayout>



package com.zhku.exp5_2;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.File;

public  class  BActivity extends AppCompatActivity {
    private TextView show;
    private Button cancel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        show = (TextView)findViewById(R.id.show);
        cancel = (Button)findViewById(R.id.cacel);

        Intent it = getIntent();
        Bundle bundle = it.getExtras();
        String date = bundle.getString("loginTime");
        it.putExtras(bundle);
        show.setText("登录用户名:admin" +"\n"+"上次登录时间:"+date);

        cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                File file = new File(getFilesDir().getParent()+"/files/data.txt");
                if(file.exists()){
                    deleteFile("data.txt");
                }
            }
        });
    }
}

实现效果:

未保存密码的登录:

保存密码后的登录:

点击第二个窗体中的取消自动登录按钮,重新启动则会显示未登录时的界面,如图一所示。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值