记住密码功能与自动登录功能+SD卡

一. 记住密码功能

在这里插入图片描述
代码如下:

//      如果记住密码是true则将读到的用户名和密码显示在页面上,并将记住密码勾选上
        if (ischeck){
            String username = sharedPreferences.getString("username", "");
            String password = sharedPreferences.getString("password", "");
            editText1.setText(username);
            editText2.setText(password);
            checkBox2.setChecked(true);
            checkBox1.setEnabled(true);
        }else {
            checkBox1.setChecked(false);
            checkBox1.setEnabled(false);
        }
        //      当点击登录时
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username = editText1.getText().toString();
                String password = editText2.getText().toString();
                if (username.equals("caoqijia")&&password.equals("123")){

//                  当选中记住密码时,就存数据
                    if (checkBox2.isChecked()){
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putBoolean("ischeck",true);
                        editor.putString("username",username);
                        editor.putString("password",password);
                        editor.commit();

//                  否则就清空页面
                    }else {
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putBoolean("ischeck",false);
                        editor.commit();
                    }        

二. 自动登录功能

在这里插入图片描述
代码如下:

//      如果自动登录是true则直接跳转(这里吐司了已经自动登录成功)
        if (zidong){
            checkBox1.setChecked(true);
            Toast.makeText(this, "自动登录成功!", Toast.LENGTH_SHORT).show();
        }
        //      当点击登录时
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username = editText1.getText().toString();
                String password = editText2.getText().toString();
                if (username.equals("caoqijia")&&password.equals("123")){
//  				当选中自动登录时,就将这个标记设为true
                    if (checkBox1.isChecked()){
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putBoolean("zidong",true);
                        editor.commit();

//                  否则设为false
                    }else {
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putBoolean("zidong",false);
                        editor.commit();
                    }
//                  跳转登录进去的界面
                    Intent intent = new Intent(Main2Activity.this,Main3Activity.class);
                    startActivity(intent);
                }
            }
        });

三. SD卡存储

SD卡介绍

  1. 一般手机文件管理 根路径 /storage/emulated/0/或者/mnt/shell/emulated/0
    在这里插入图片描述
  2. 重要代码:
方法该方法的作用
Environment.getExternalStorageState()判断SD卡是否挂载
Environment.getExternalStorageDirectory()获取SD卡的根目录
  1. 必须要添加读写SD卡的权限
	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

代码实现

通过四个按钮来将SD卡储存的功能实现

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    Button button1,button2,button3,button4;
    ImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button1 = findViewById(R.id.bt1);
        button2 = findViewById(R.id.bt2);
        button3 = findViewById(R.id.bt3);
        button4 = findViewById(R.id.bt4);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        button4.setOnClickListener(this);

        imageView = findViewById(R.id.iv);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.bt1:
                sd_write();
                break;
            case R.id.bt2:
                sd_read();
                break;
            case R.id.bt3:
                sd_load();
                break;
            case R.id.bt4:
                sd_show();
                break;
        }
    }

//  将图片显示在ImageView上
    private void sd_show() {
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
            imageView.setImageBitmap(BitmapFactory.decodeFile("/sdcard/a.jpg"));
        }
    }

//  从网上获取图片并存储在SD卡上
    private void sd_load() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL url = new URL("http://pic1.win4000.com/wallpaper/e/50d80458e1373.jpg");
                    HttpURLConnection http = (HttpURLConnection) url.openConnection();
                    if (http.getResponseCode()==200) {
                        InputStream is = http.getInputStream();
                        File file = Environment.getExternalStorageDirectory();
                        FileOutputStream fileOutputStream = new FileOutputStream(new File(file,"a.jpg"));
                        int len=0;
                        byte[] bytes = new byte[1024];
                        while ((len=is.read(bytes))!=-1){
                            fileOutputStream.write(bytes,0,len);
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

//  读取存储的内容吐司显示
    private void sd_read() {
        StringBuilder sb = new StringBuilder();
        File file = Environment.getExternalStorageDirectory();
        try {
            FileInputStream fileInputStream = new FileInputStream(new File(file,"1703A.txt"));
            byte[] bytes = new byte[1024];
            int len = 0;
            while ((len=fileInputStream.read(bytes))!=-1){
                sb.append(new String(bytes,0,len));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        Toast.makeText(this, ""+sb.toString(), Toast.LENGTH_SHORT).show();
    }

//  储存文字内容
    private void sd_write() {
        File file = Environment.getExternalStorageDirectory();
        Toast.makeText(this, ""+file, Toast.LENGTH_SHORT).show();
        try {
            FileOutputStream fileOutputStream = new FileOutputStream(new File(file,"1703A.txt"));
            fileOutputStream.write("我是曹起嘉".getBytes());
            fileOutputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上就是我所掌握对SD卡存储以及SP存储扩展部分的知识及内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值