一. 记住密码功能
代码如下:
// 如果记住密码是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卡介绍
- 一般手机文件管理 根路径 /storage/emulated/0/或者/mnt/shell/emulated/0
- 重要代码:
方法 | 该方法的作用 |
---|---|
Environment.getExternalStorageState() | 判断SD卡是否挂载 |
Environment.getExternalStorageDirectory() | 获取SD卡的根目录 |
- 必须要添加读写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存储扩展部分的知识及内容