用as模拟QQ登录界面,用json存储数据gson读取数据
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:background="#E6E6F8"
android:orientation="vertical"
android:padding="10dp"
tools:context=".MainActivity">
<ImageView
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_centerHorizontal="true"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:src="@mipmap/ic_launcher_round"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="账号"
android:textColor="#000"
android:textSize="20sp"/>
<EditText
android:id="@+id/et_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:padding="10dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="密码"
android:textColor="#000"
android:textSize="20sp"/>
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:password="true"
android:padding="10dp"/>
</LinearLayout>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt_login"
android:layout_marginTop="25dp"
android:background="#3c8dc4"
android:text="登录"
android:textSize="20sp"/>
</LinearLayout>
package com.example.mysaveqq;
import android.content.Context;
import android.content.SharedPreferences;
import android.widget.Toast;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
import static android.content.Context.MODE_PRIVATE;
import static java.lang.System.out;
public class SPsaveQQ {
public static boolean saveUserInfo(Context context, String account, String password) throws JSONException {
// SharedPreferences sp=context.getSharedPreferences("data",context.MODE_PRIVATE);
//// SharedPreferences.Editor edit=sp.edit();
//// edit.putString("useName",account);
//// edit.putString("pwd",password);
//// edit.commit();
JSONObject jsonObject=new JSONObject();
jsonObject.put("useName",account);
jsonObject.put("pwd",password);
try {
FileOutputStream out1=context.openFileOutput("qq.json",context.MODE_PRIVATE);
try {
out1.write(jsonObject.toString().getBytes());
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return true;
}
public static Map<String,String>getUserInfo(Context context,InputStream is) throws IOException {
// SharedPreferences sp=context.getSharedPreferences("data",Context.MODE_PRIVATE);
// String account=sp.getString("useName",null);
// String password=sp.getString("pwd",null);
// Map<String,String>userMap =new HashMap<String,String>();
// userMap.put("account",account);
// userMap.put("password",password);
byte[] buffer=new byte[is.available()];
is.read(buffer);
String json =new String(buffer,"utf-8");
is.close();
Gson gson=new Gson();
Type type=new TypeToken< Map<String,String>>(){}.getType();
Map<String,String> userMap=gson.fromJson(json,type);
return userMap;
}
}
创建json对象
JSONObject jsonObject=new JSONObject();
jsonObject.put(“useName”,account);
jsonObject.put(“pwd”,password);
用gson解析
Gson gson=new Gson();
Type type=new TypeToken< Map<String,String>>(){}.getType();
Map<String,String> userMap=gson.fromJson(json,type);
主函数
package com.example.mysaveqq;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.service.autofill.SaveInfo;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import org.json.JSONException;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import static android.os.Build.VERSION_CODES.M;
import static java.lang.System.out;
public class MainActivity extends AppCompatActivity {
public EditText et_account;
public EditText et_password;
public Button btn_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
Map<String,String> userInfo=null;
try {
InputStream is;
is=this.openFileInput("qq.json");
userInfo = SPsaveQQ.getUserInfo(this,is);
} catch (IOException e) {
e.printStackTrace();
}
if(userInfo !=null){
et_account.setText(userInfo.get("useName"));
et_password.setText(userInfo.get("pwd"));
}
}
private void initView(){
et_account=(EditText)findViewById(R.id.et_account);
et_password=(EditText)findViewById(R.id.et_password);
btn_login=(Button)findViewById(R.id.bt_login);
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.bt_login:
String account=et_account.getText().toString().trim();
String password=et_password.getText().toString().trim();
if(TextUtils.isEmpty(account)){
Toast.makeText(MainActivity.this, "请输入QQ账号", Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(password)){
Toast.makeText(MainActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
boolean isSaveSuccess= false;
try {
isSaveSuccess = SPsaveQQ.saveUserInfo(MainActivity.this,account,password);
} catch (JSONException e) {
e.printStackTrace();
}
//
if(isSaveSuccess){
Toast.makeText(MainActivity.this,"保存成功",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_SHORT).show();
}
}
}
});
}
}
json的位置
结果: