安卓用户名密码操作及虚拟机问题

今日所学:

记住用户名和登录密码

用adb查看保存文件内容

如何使用adb 如何安装adb-百度经验

遇到的问题:

用adb查看文件时,没有权限访问data文件

出现原因:google play虚拟机没有root权限

解决办法:

用google API的虚拟机

相关博客:adb shell中提示Permission denied - 简书

关于/system/bin/sh: su: not found的解决办法(安卓模拟器运行) - 程序员大本营

成果截图:

代码:

MainActivity.java

复制代码
import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    private EditText mEtPhone;
    private EditText mEtPasswd;
    private CheckBox mPsd;
    private String SP_PHONE="sp_phone";
    private String SP_PASSWD="sp_passwd";
    private SharedPreferences sharedPreferences;
    private String SP_IS_REMEMBER="sp_is_remember";
    private boolean isCheck=false;
    private String TAG="MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initUI();
        initData();
    }

    private void initData() {
        if(sharedPreferences==null){
            sharedPreferences=getApplicationContext().getSharedPreferences("config", Context.MODE_PRIVATE);
        }
        mEtPhone.setText(sharedPreferences.getString(SP_PHONE,""));
        mEtPasswd.setText(sharedPreferences.getString(SP_PASSWD,""));
        isCheck=sharedPreferences.getBoolean(SP_IS_REMEMBER,false);
        Log.i(TAG,"测试:"+isCheck);
        mPsd.setChecked(isCheck);
    }

    private void initUI() {
        mEtPhone=findViewById(R.id.et_phone);
        mEtPhone.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                if(isCheck){
                    if(sharedPreferences==null){
                        sharedPreferences=getApplicationContext().getSharedPreferences("config", Context.MODE_PRIVATE);
                    }
                    SharedPreferences.Editor edit=sharedPreferences.edit();
                    edit. putString(SP_PHONE,mEtPhone.getText().toString());
                    edit.commit();
                }

            }
        });
        mEtPasswd=findViewById(R.id.et_passwd);
        mEtPasswd.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                if(isCheck){
                    if(sharedPreferences==null){
                        sharedPreferences=getApplicationContext().getSharedPreferences("config", Context.MODE_PRIVATE);
                    }
                    SharedPreferences.Editor edit=sharedPreferences.edit();
                    edit.putString(SP_PASSWD,mEtPasswd.getText().toString());
                    edit.commit();
                }

            }
        });
        mPsd=findViewById(R.id.cb_remember_psd);
        mPsd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                Log.d(TAG,"状态为:"+isChecked);
                isCheck=isChecked;

                if(sharedPreferences==null){
                    sharedPreferences=getApplicationContext().getSharedPreferences("config", Context.MODE_PRIVATE);
                }
                SharedPreferences.Editor edit=sharedPreferences.edit();
                if(isChecked){
                    edit. putString(SP_PHONE,mEtPhone.getText().toString());
                    edit.putString(SP_PASSWD,mEtPasswd.getText().toString());
                }
                edit.putBoolean(SP_IS_REMEMBER,isChecked);
                edit.commit();
            }
        });

    }
}
复制代码

activity_main.xml

复制代码
  
<?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"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/et_phone"
        android:inputType="phone"
        android:hint="电话"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <EditText
        android:id="@+id/et_passwd"
        android:inputType="textPassword"
        android:hint="密码"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <CheckBox
        android:id="@+id/cb_remember_psd"
        android:text="记住密码"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:text="登录"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>
复制代码
原文地址:https://www.cnblogs.com/jz-no-bug/p/14907655.html