Android开发 登录注册筹划

锦通  金牌会员 | 2024-11-24 03:30:44 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 878|帖子 878|积分 2634

用Android Studio 简单的实现登录注册
目录
一、登录界面
activity_login.xml 布局代码:
login.java 代码: 
二、注册界面 
activity_register.xml布局代码:
register.java 代码:
三、修改密码(忘记密码 ?)
activity_update_password.xml布局代码:
UpdatePassword.java 代码:
四、SQLite 与 SharedPreferences 操作
QQHelper.java 创建SQLite数据库:
QQperate.java 对SQLite数据库举行增、改、查操作:
SaveQQ.java保存QQ账号与密码:
五、登录乐成界面
六、 styles.xml 和AndroidManifest.xml
styles.xml 代码:
AndroidManifest.xml 代码:




一、登录界面

activity_login.xml 布局代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     android:layout_width="match_parent"
  5.     android:layout_height="match_parent"
  6.     android:orientation="vertical">
  7.     <RelativeLayout
  8.         android:background="@drawable/bgqq"
  9.         android:layout_width="match_parent"
  10.         android:layout_height="match_parent">
  11.         <ImageView
  12.             android:id="@+id/imgfile"
  13.             android:layout_width="100dp"
  14.             android:layout_height="100dp"
  15.             android:layout_centerHorizontal="true"
  16.             android:layout_marginTop="150dp"
  17.             android:padding="2dp"
  18.             android:background="#ffffff"
  19.             app:srcCompat="@drawable/head" />
  20.         <TextView
  21.             android:id="@+id/qq_name"
  22.             android:layout_width="wrap_content"
  23.             android:layout_height="wrap_content"
  24.             android:layout_centerHorizontal="true"
  25.             android:layout_below="@+id/imgfile"
  26.             android:layout_marginTop="5dp"
  27.             android:textSize="24sp"
  28.             android:text="@null" />
  29.         <LinearLayout
  30.             android:id="@+id/zhang"
  31.             android:layout_width="wrap_content"
  32.             android:layout_height="40dp"
  33.             android:layout_centerHorizontal="true"
  34.             android:layout_below="@+id/qq_name"
  35.             android:layout_marginTop="40dp"
  36.             android:background="#F8F3E5"
  37.             android:orientation="horizontal">
  38.             <TextView
  39.                 android:id="@+id/textView4"
  40.                 android:layout_width="wrap_content"
  41.                 android:layout_height="38dp"
  42.                 android:layout_gravity="center"
  43.                 android:layout_marginLeft="2dp"
  44.                 android:gravity="center"
  45.                 android:padding="4dp"
  46.                 android:background="#F8F3E5"
  47.                 android:textSize="18sp"
  48.                 android:textColor="@color/black"
  49.                 android:text="账号" />
  50.             <View style="@style/vLine" />
  51.             <EditText
  52.                 android:id="@+id/login_z"
  53.                 android:layout_width="wrap_content"
  54.                 android:layout_height="38dp"
  55.                 android:layout_gravity="center"
  56.                 android:padding="4dp"
  57.                 android:paddingLeft="5dp"
  58.                 android:background="#F8F3E5"
  59.                 android:textSize="18sp"
  60.                 android:textColor="@color/black"
  61.                 android:textColorHint="@color/black"
  62.                 android:ems="10"
  63.                 android:inputType="textPersonName"
  64.                 android:text="" />
  65.         </LinearLayout>
  66.         <LinearLayout
  67.             android:id="@+id/ming"
  68.             android:layout_width="wrap_content"
  69.             android:layout_height="40dp"
  70.             android:layout_centerHorizontal="true"
  71.             android:layout_below="@+id/zhang"
  72.             android:layout_marginTop="10dp"
  73.             android:background="#F8F3E5"
  74.             android:orientation="horizontal">
  75.             <TextView
  76.                 android:id="@+id/textView5"
  77.                 android:layout_width="wrap_content"
  78.                 android:layout_height="38dp"
  79.                 android:layout_gravity="center"
  80.                 android:layout_marginLeft="2dp"
  81.                 android:gravity="center"
  82.                 android:padding="4dp"
  83.                 android:background="#F8F3E5"
  84.                 android:textSize="18sp"
  85.                 android:textColor="@color/black"
  86.                 android:text="密码" />
  87.             <View style="@style/vLine" />
  88.             <EditText
  89.                 android:id="@+id/login_m"
  90.                 android:layout_width="wrap_content"
  91.                 android:layout_height="38dp"
  92.                 android:layout_gravity="center"
  93.                 android:padding="4dp"
  94.                 android:paddingLeft="5dp"
  95.                 android:background="#F8F3E5"
  96.                 android:textSize="18sp"
  97.                 android:textColor="@color/black"
  98.                 android:textColorHint="@color/black"
  99.                 android:ems="10"
  100.                 android:inputType="textPassword" />
  101.         </LinearLayout>
  102.         <RelativeLayout
  103.             android:layout_below="@+id/ming"
  104.             android:layout_marginTop="10dp"
  105.             android:layout_width="260dp"
  106.             android:layout_centerHorizontal="true"
  107.             android:layout_height="wrap_content">
  108.             <Button
  109.                 android:id="@+id/bt_register"
  110.                 android:layout_width="58dp"
  111.                 android:layout_height="40dp"
  112.                 android:background="#A1A88D"
  113.                 android:textSize="18dp"
  114.                 android:text="注册" />
  115.             <Button
  116.                 android:id="@+id/bt_xpassword"
  117.                 android:layout_width="wrap_content"
  118.                 android:layout_height="40dp"
  119.                 android:layout_toRightOf="@+id/bt_register"
  120.                 android:layout_marginLeft="2dp"
  121.                 android:background="#00000000"
  122.                 android:text="忘记密码 ?" />
  123.             <Button
  124.                 android:id="@+id/bt_login"
  125.                 android:layout_width="58dp"
  126.                 android:layout_height="40dp"
  127.                 android:layout_alignParentRight="true"
  128.                 android:background="#A1A88D"
  129.                 android:text="登录"
  130.                 android:textSize="18dp" />
  131.         </RelativeLayout>
  132.     </RelativeLayout>
  133. </LinearLayout>
复制代码
login.java 代码: 

  1. package com.example.datastorage;
  2. import androidx.annotation.Nullable;
  3. import androidx.appcompat.app.AppCompatActivity;
  4. import android.annotation.SuppressLint;
  5. import android.content.Intent;
  6. import android.os.Bundle;
  7. import android.text.TextUtils;
  8. import android.util.Log;
  9. import android.view.KeyEvent;
  10. import android.view.View;
  11. import android.widget.Button;
  12. import android.widget.EditText;
  13. import android.widget.Toast;
  14. import java.util.Map;
  15. import java.util.Timer;
  16. import java.util.TimerTask;
  17. public class login extends AppCompatActivity implements View.OnClickListener {
  18.     QQHelper qqHelper;
  19.     private EditText login_z, login_m;
  20.     @Override
  21.     protected void onCreate(Bundle savedInstanceState) {
  22.         super.onCreate(savedInstanceState);
  23.         setContentView(R.layout.activity_login);
  24.         qqHelper = new QQHelper(login.this);
  25. //        login.this.deleteDatabase("qq.db");
  26.         init();
  27.         Outdate();
  28.     }
  29.     private void init() {
  30.         login_z = findViewById(R.id.login_z);
  31.         login_m = findViewById(R.id.login_m);
  32.         Button bt_register = findViewById(R.id.bt_register);
  33.         Button bt_xpassword = findViewById(R.id.bt_xpassword);
  34.         Button bt_login = findViewById(R.id.bt_login);
  35.         bt_register.setOnClickListener(this);
  36.         bt_xpassword.setOnClickListener(this);
  37.         bt_login.setOnClickListener(this);
  38.     }
  39.     private void Outdate() {
  40.         Map<String,String> map = SaveQQ.getUserInfo(login.this);
  41.         String account = map.get("account");
  42.         String password = map.get("password");
  43.         login_z.setText(account);
  44.         login_m.setText(password);
  45.     }
  46.     @SuppressLint("NonConstantResourceId")
  47.     @Override
  48.     public void onClick(View view) {
  49.         switch (view.getId()) {
  50.             case R.id.bt_register: {
  51.                 Intent intent = new Intent(login.this , register.class);
  52.                 startActivity(intent);
  53.                 finish();
  54.                 break;
  55.             }
  56.             case R.id.bt_xpassword: {
  57.                 Intent intent = new Intent(login.this , UpdatePassword.class);
  58.                 startActivity(intent);
  59.                 finish();
  60.                 break;
  61.             }
  62.             case R.id.bt_login: {
  63.                 String account = login_z.getText().toString().trim();
  64.                 String password = login_m.getText().toString();
  65.                 Log.i("debug","登录按钮");
  66.                 if(TextUtils.isEmpty(account) || TextUtils.isEmpty(password)) {
  67.                     Toast.makeText(this, "账号和密码不能为空", Toast.LENGTH_SHORT).show();
  68.                     break;
  69.                 }
  70.                 int f = QQperate.query(login.this, account, password);
  71.                 if(f == 1) {
  72.                     Intent intent = new Intent(login.this , zhujianActivity.class);
  73.                     SaveQQ.SaveUserInfo(login.this, account, password);
  74.                     Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
  75.                     startActivity(intent);
  76.                     finish();
  77.                 } else {
  78.                     Toast.makeText(this, "账号或密码错误", Toast.LENGTH_SHORT).show();
  79.                 }
  80.                 break;
  81.             }
  82.         }
  83.     }
  84. }
复制代码
二、注册界面 

activity_register.xml布局代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     android:layout_width="match_parent"
  5.     android:layout_height="match_parent"
  6.     android:orientation="vertical">
  7.     <RelativeLayout
  8.         android:background="@drawable/bgqq"
  9.         android:layout_width="match_parent"
  10.         android:layout_height="match_parent">
  11.         <ImageView
  12.             android:id="@+id/register_back"
  13.             android:layout_width="wrap_content"
  14.             android:layout_height="wrap_content"
  15.             android:layout_marginTop="5dp"
  16.             android:padding="5dp"
  17.             app:srcCompat="@drawable/back" />
  18.         <ImageView
  19.             android:id="@+id/imgqq"
  20.             android:layout_width="100dp"
  21.             android:layout_height="100dp"
  22.             android:layout_centerHorizontal="true"
  23.             android:layout_marginTop="100dp"
  24.             app:srcCompat="@drawable/rg" />
  25.         <TextView
  26.             android:id="@+id/textView2"
  27.             android:layout_width="wrap_content"
  28.             android:layout_height="wrap_content"
  29.             android:layout_centerHorizontal="true"
  30.             android:layout_below="@+id/imgqq"
  31.             android:textColor="#000000"
  32.             android:textSize="24sp"
  33.             android:text="用户注册" />
  34.         <LinearLayout
  35.             android:id="@+id/zhang"
  36.             android:layout_width="wrap_content"
  37.             android:layout_height="40dp"
  38.             android:layout_centerHorizontal="true"
  39.             android:layout_below="@+id/textView2"
  40.             android:layout_marginTop="40dp"
  41.             android:background="#F8F3E5"
  42.             android:orientation="horizontal">
  43.             <TextView
  44.                 android:id="@+id/textView4"
  45.                 android:layout_width="wrap_content"
  46.                 android:layout_height="38dp"
  47.                 android:layout_gravity="center"
  48.                 android:layout_marginLeft="2dp"
  49.                 android:gravity="center"
  50.                 android:padding="4dp"
  51.                 android:background="#F8F3E5"
  52.                 android:textSize="18sp"
  53.                 android:textColor="@color/black"
  54.                 android:text="账        号" />
  55.             <View style="@style/vLine" />
  56.             <EditText
  57.                 android:id="@+id/register_z"
  58.                 android:layout_width="wrap_content"
  59.                 android:layout_height="38dp"
  60.                 android:layout_gravity="center"
  61.                 android:padding="4dp"
  62.                 android:paddingLeft="5dp"
  63.                 android:background="#F8F3E5"
  64.                 android:textSize="18sp"
  65.                 android:textColor="@color/black"
  66.                 android:textColorHint="@color/black"
  67.                 android:ems="10"
  68.                 android:inputType="textPersonName"
  69.                 android:text="" />
  70.         </LinearLayout>
  71.         <LinearLayout
  72.             android:id="@+id/qq_phone"
  73.             android:layout_width="wrap_content"
  74.             android:layout_height="40dp"
  75.             android:layout_centerHorizontal="true"
  76.             android:layout_below="@+id/zhang"
  77.             android:layout_marginTop="10dp"
  78.             android:background="#F8F3E5"
  79.             android:orientation="horizontal">
  80.             <TextView
  81.                 android:id="@+id/textView8"
  82.                 android:layout_width="wrap_content"
  83.                 android:layout_height="38dp"
  84.                 android:layout_gravity="center"
  85.                 android:layout_marginLeft="2dp"
  86.                 android:gravity="center"
  87.                 android:padding="4dp"
  88.                 android:background="#F8F3E5"
  89.                 android:textSize="18sp"
  90.                 android:textColor="@color/black"
  91.                 android:text="电话号码" />
  92.             <View style="@style/vLine" />
  93.             <EditText
  94.                 android:id="@+id/register_pnum"
  95.                 android:layout_width="wrap_content"
  96.                 android:layout_height="38dp"
  97.                 android:layout_gravity="center"
  98.                 android:padding="4dp"
  99.                 android:paddingLeft="5dp"
  100.                 android:background="#F8F3E5"
  101.                 android:textSize="18sp"
  102.                 android:textColor="@color/black"
  103.                 android:textColorHint="@color/black"
  104.                 android:ems="10"
  105.                 android:inputType="textPersonName"
  106.                 android:text="" />
  107.         </LinearLayout>
  108.         <LinearLayout
  109.             android:id="@+id/ming1"
  110.             android:layout_width="wrap_content"
  111.             android:layout_height="40dp"
  112.             android:layout_centerHorizontal="true"
  113.             android:layout_below="@+id/qq_phone"
  114.             android:layout_marginTop="10dp"
  115.             android:background="#F8F3E5"
  116.             android:orientation="horizontal">
  117.             <TextView
  118.                 android:id="@+id/textView5"
  119.                 android:layout_width="wrap_content"
  120.                 android:layout_height="38dp"
  121.                 android:layout_gravity="center"
  122.                 android:layout_marginLeft="2dp"
  123.                 android:gravity="center"
  124.                 android:padding="4dp"
  125.                 android:background="#F8F3E5"
  126.                 android:textSize="18sp"
  127.                 android:textColor="@color/black"
  128.                 android:text="密        码" />
  129.             <View style="@style/vLine" />
  130.             <EditText
  131.                 android:id="@+id/register_m"
  132.                 android:layout_width="wrap_content"
  133.                 android:layout_height="38dp"
  134.                 android:layout_gravity="center"
  135.                 android:padding="4dp"
  136.                 android:paddingLeft="5dp"
  137.                 android:background="#F8F3E5"
  138.                 android:textSize="18sp"
  139.                 android:textColor="@color/black"
  140.                 android:textColorHint="@color/black"
  141.                 android:ems="10"
  142.                 android:inputType="textPassword" />
  143.         </LinearLayout>
  144.         <LinearLayout
  145.             android:id="@+id/ming2"
  146.             android:layout_width="wrap_content"
  147.             android:layout_height="40dp"
  148.             android:layout_centerHorizontal="true"
  149.             android:layout_below="@+id/ming1"
  150.             android:layout_marginTop="10dp"
  151.             android:background="#F8F3E5"
  152.             android:orientation="horizontal">
  153.             <TextView
  154.                 android:id="@+id/textView7"
  155.                 android:layout_width="wrap_content"
  156.                 android:layout_height="38dp"
  157.                 android:layout_gravity="center"
  158.                 android:layout_marginLeft="2dp"
  159.                 android:gravity="center"
  160.                 android:padding="4dp"
  161.                 android:background="#F8F3E5"
  162.                 android:textSize="18sp"
  163.                 android:textColor="@color/black"
  164.                 android:text="确认密码" />
  165.             <View style="@style/vLine" />
  166.             <EditText
  167.                 android:id="@+id/register_am"
  168.                 android:layout_width="wrap_content"
  169.                 android:layout_height="38dp"
  170.                 android:layout_gravity="center"
  171.                 android:padding="4dp"
  172.                 android:paddingLeft="5dp"
  173.                 android:background="#F8F3E5"
  174.                 android:textSize="18sp"
  175.                 android:textColor="@color/black"
  176.                 android:textColorHint="@color/black"
  177.                 android:ems="10"
  178.                 android:inputType="textPassword" />
  179.         </LinearLayout>
  180.         <Button
  181.             android:id="@+id/bt_rgcommit"
  182.             android:layout_width="300dp"
  183.             android:layout_height="40dp"
  184.             android:layout_centerHorizontal="true"
  185.             android:layout_below="@id/ming2"
  186.             android:layout_marginTop="20dp"
  187.             android:background="#A1A88D"
  188.             android:textSize="18sp"
  189.             android:text="提交" />
  190.     </RelativeLayout>
  191. </LinearLayout>
复制代码
register.java 代码:

  1. package com.example.datastorage;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.text.TextUtils;
  6. import android.util.Log;
  7. import android.view.KeyEvent;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.EditText;
  11. import android.widget.ImageView;
  12. import android.widget.Toast;
  13. public class register extends AppCompatActivity {
  14.     private EditText register_z, register_m, register_am, register_pnum;
  15.     private ImageView back;
  16.     @Override
  17.     protected void onCreate(Bundle savedInstanceState) {
  18.         super.onCreate(savedInstanceState);
  19.         setContentView(R.layout.activity_register);
  20.         init();
  21.     }
  22.     private void init() {
  23.         register_z = findViewById(R.id.register_z);
  24.         register_pnum = findViewById(R.id.register_pnum);
  25.         register_m = findViewById(R.id.register_m);
  26.         register_am = findViewById(R.id.register_am);
  27.         Button bt_rgcommit = findViewById(R.id.bt_rgcommit);
  28.         back = findViewById(R.id.register_back);
  29.         back.setOnClickListener(new View.OnClickListener() {
  30.             @Override
  31.             public void onClick(View view) {
  32.                 result();
  33.             }
  34.         });
  35.         bt_rgcommit.setOnClickListener(new View.OnClickListener() {
  36.             @Override
  37.             public void onClick(View view) {
  38.                 String account = register_z.getText().toString();
  39.                 String num = register_pnum.getText().toString().trim();
  40.                 String password = register_m.getText().toString();
  41.                 String apassword = register_am.getText().toString();
  42.                 if(TextUtils.isEmpty(account)) {
  43.                     Toast.makeText(register.this, "账号不能为空", Toast.LENGTH_SHORT).show();
  44.                     return;
  45.                 }
  46.                 if(TextUtils.isEmpty(num)) {
  47.                     Toast.makeText(register.this, "号码不能为空", Toast.LENGTH_SHORT).show();
  48.                     return;
  49.                 }
  50.                 if(TextUtils.isEmpty(password)) {
  51.                     Toast.makeText(register.this, "密码不能为空", Toast.LENGTH_SHORT).show();
  52.                     return;
  53.                 }
  54.                 if(TextUtils.isEmpty(apassword)) {
  55.                     Toast.makeText(register.this, "确认密码不能为空", Toast.LENGTH_SHORT).show();
  56.                     return;
  57.                 }
  58.                 if(!password.equals(apassword)) {
  59.                     Toast.makeText(register.this, "密码和确认密码不相同", Toast.LENGTH_SHORT).show();
  60.                     return;
  61.                 }
  62.                 int f = QQperate.insert(register.this, account, num, password);
  63.                 if (f == 1) {
  64.                     SaveQQ.SaveUserInfo(register.this , account, password);
  65.                     Toast.makeText(register.this, "注册成功", Toast.LENGTH_SHORT).show();
  66.                 } else {
  67.                     Toast.makeText(register.this, "注册失败,账号或者号码已存在", Toast.LENGTH_SHORT).show();
  68.                 }
  69.             }
  70.         });
  71.     }
  72.     private void result() {
  73.         Intent intent = new Intent(register.this , login.class);
  74.         startActivity(intent);
  75.         finish();
  76.     }
  77.     @Override
  78.     public boolean onKeyDown(int keyCode, KeyEvent event) {
  79.         if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
  80.             result();
  81.         }
  82.         return false;
  83.     }
  84. }
复制代码
三、修改密码(忘记密码 ?)

activity_update_password.xml布局代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     android:layout_width="match_parent"
  5.     android:layout_height="match_parent"
  6.     android:orientation="vertical">
  7.     <RelativeLayout
  8.         android:background="@drawable/bgqq"
  9.         android:layout_width="match_parent"
  10.         android:layout_height="match_parent">
  11.         <ImageView
  12.             android:id="@+id/password_back"
  13.             android:layout_width="wrap_content"
  14.             android:layout_height="wrap_content"
  15.             android:layout_marginTop="5dp"
  16.             android:padding="5dp"
  17.             app:srcCompat="@drawable/back" />
  18.         <ImageView
  19.             android:id="@+id/imgqq"
  20.             android:layout_width="100dp"
  21.             android:layout_height="100dp"
  22.             android:layout_centerHorizontal="true"
  23.             android:layout_marginTop="100dp"
  24.             app:srcCompat="@drawable/up_password" />
  25.         <TextView
  26.             android:id="@+id/textView2"
  27.             android:layout_width="wrap_content"
  28.             android:layout_height="wrap_content"
  29.             android:layout_centerHorizontal="true"
  30.             android:layout_below="@+id/imgqq"
  31.             android:textColor="#2C2C2C"
  32.             android:textSize="24sp"
  33.             android:text="修改密码" />
  34.         <LinearLayout
  35.             android:id="@+id/qq_phone"
  36.             android:layout_width="wrap_content"
  37.             android:layout_height="40dp"
  38.             android:layout_centerHorizontal="true"
  39.             android:layout_below="@+id/textView2"
  40.             android:layout_marginTop="40dp"
  41.             android:background="#F8F3E5"
  42.             android:orientation="horizontal">
  43.             <TextView
  44.                 android:id="@+id/textView8"
  45.                 android:layout_width="wrap_content"
  46.                 android:layout_height="38dp"
  47.                 android:layout_gravity="center"
  48.                 android:layout_marginLeft="2dp"
  49.                 android:gravity="center"
  50.                 android:padding="4dp"
  51.                 android:background="#F8F3E5"
  52.                 android:textSize="18sp"
  53.                 android:textColor="@color/black"
  54.                 android:text="注册号码" />
  55.             <View style="@style/vLine" />
  56.             <EditText
  57.                 android:id="@+id/up_pnum"
  58.                 android:layout_width="wrap_content"
  59.                 android:layout_height="38dp"
  60.                 android:layout_gravity="center"
  61.                 android:padding="4dp"
  62.                 android:paddingLeft="5dp"
  63.                 android:background="#F8F3E5"
  64.                 android:textSize="18sp"
  65.                 android:textColor="@color/black"
  66.                 android:textColorHint="@color/black"
  67.                 android:ems="10"
  68.                 android:inputType="textPersonName"
  69.                 android:text="" />
  70.         </LinearLayout>
  71.         <LinearLayout
  72.             android:id="@+id/ming1"
  73.             android:layout_width="wrap_content"
  74.             android:layout_height="40dp"
  75.             android:layout_centerHorizontal="true"
  76.             android:layout_below="@+id/qq_phone"
  77.             android:layout_marginTop="10dp"
  78.             android:background="#F8F3E5"
  79.             android:orientation="horizontal">
  80.             <TextView
  81.                 android:id="@+id/textView5"
  82.                 android:layout_width="wrap_content"
  83.                 android:layout_height="38dp"
  84.                 android:layout_gravity="center"
  85.                 android:layout_marginLeft="2dp"
  86.                 android:gravity="center"
  87.                 android:padding="4dp"
  88.                 android:background="#F8F3E5"
  89.                 android:textSize="18sp"
  90.                 android:textColor="@color/black"
  91.                 android:text="新  密  码" />
  92.             <View style="@style/vLine" />
  93.             <EditText
  94.                 android:id="@+id/up_m"
  95.                 android:layout_width="wrap_content"
  96.                 android:layout_height="38dp"
  97.                 android:layout_gravity="center"
  98.                 android:padding="4dp"
  99.                 android:paddingLeft="5dp"
  100.                 android:background="#F8F3E5"
  101.                 android:textSize="18sp"
  102.                 android:textColor="@color/black"
  103.                 android:textColorHint="@color/black"
  104.                 android:ems="10"
  105.                 android:inputType="textPassword" />
  106.         </LinearLayout>
  107.         <LinearLayout
  108.             android:id="@+id/ming2"
  109.             android:layout_width="wrap_content"
  110.             android:layout_height="40dp"
  111.             android:layout_centerHorizontal="true"
  112.             android:layout_below="@+id/ming1"
  113.             android:layout_marginTop="10dp"
  114.             android:background="#F8F3E5"
  115.             android:orientation="horizontal">
  116.             <TextView
  117.                 android:id="@+id/textView7"
  118.                 android:layout_width="wrap_content"
  119.                 android:layout_height="38dp"
  120.                 android:layout_gravity="center"
  121.                 android:layout_marginLeft="2dp"
  122.                 android:gravity="center"
  123.                 android:padding="4dp"
  124.                 android:background="#F8F3E5"
  125.                 android:textSize="18sp"
  126.                 android:textColor="@color/black"
  127.                 android:text="确认密码" />
  128.             <View style="@style/vLine" />
  129.             <EditText
  130.                 android:id="@+id/up_am"
  131.                 android:layout_width="wrap_content"
  132.                 android:layout_height="38dp"
  133.                 android:layout_gravity="center"
  134.                 android:padding="4dp"
  135.                 android:paddingLeft="5dp"
  136.                 android:background="#F8F3E5"
  137.                 android:textSize="18sp"
  138.                 android:textColor="@color/black"
  139.                 android:textColorHint="@color/black"
  140.                 android:ems="10"
  141.                 android:inputType="textPassword" />
  142.         </LinearLayout>
  143.         <Button
  144.             android:id="@+id/bt_upcommit"
  145.             android:layout_width="300dp"
  146.             android:layout_height="40dp"
  147.             android:layout_centerHorizontal="true"
  148.             android:layout_below="@id/ming2"
  149.             android:layout_marginTop="20dp"
  150.             android:background="#A1A88D"
  151.             android:textSize="18sp"
  152.             android:text="提交" />
  153.     </RelativeLayout>
  154. </LinearLayout>
复制代码
UpdatePassword.java 代码:

  1. package com.example.datastorage;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.content.Intent;
  4. import android.database.sqlite.SQLiteDatabase;
  5. import android.os.Bundle;
  6. import android.text.TextUtils;
  7. import android.view.KeyEvent;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.EditText;
  11. import android.widget.ImageView;
  12. import android.widget.Toast;
  13. import java.util.Map;
  14. public class UpdatePassword extends AppCompatActivity {
  15.     private EditText up_pnum, up_m, up_am;
  16.     private ImageView back;
  17.     @Override
  18.     protected void onCreate(Bundle savedInstanceState) {
  19.         super.onCreate(savedInstanceState);
  20.         setContentView(R.layout.activity_update_password);
  21.         init();
  22.     }
  23.     private void init() {
  24.         up_pnum = findViewById(R.id.up_pnum);
  25.         up_m = findViewById(R.id.up_m);
  26.         up_am = findViewById(R.id.up_am);
  27.         Button bt_upcommit = findViewById(R.id.bt_upcommit);
  28.         back = findViewById(R.id.password_back);
  29.         back.setOnClickListener(new View.OnClickListener() {
  30.             @Override
  31.             public void onClick(View view) {
  32.                 result();
  33.             }
  34.         });
  35.         bt_upcommit.setOnClickListener(new View.OnClickListener() {
  36.             @Override
  37.             public void onClick(View view) {
  38.                 String num = up_pnum.getText().toString().trim();
  39.                 String password = up_m.getText().toString();
  40.                 String apassword = up_am.getText().toString();
  41.                 if (TextUtils.isEmpty(num)) {
  42.                     Toast.makeText(UpdatePassword.this, "号码不能为空", Toast.LENGTH_SHORT).show();
  43.                     return;
  44.                 }
  45.                 if (TextUtils.isEmpty(password)) {
  46.                     Toast.makeText(UpdatePassword.this, "新密码不能为空", Toast.LENGTH_SHORT).show();
  47.                     return;
  48.                 }
  49.                 if (TextUtils.isEmpty(apassword)) {
  50.                     Toast.makeText(UpdatePassword.this, "确认密码不能为空", Toast.LENGTH_SHORT).show();
  51.                     return;
  52.                 }
  53.                 if (!password.equals(apassword)) {
  54.                     Toast.makeText(UpdatePassword.this, "确认密码不能为空", Toast.LENGTH_SHORT).show();
  55.                     return;
  56.                 }
  57.                 int f = QQperate.update(UpdatePassword.this , num, password);
  58.                 if(f == 1) {
  59.                     Map<String,String> map = QQperate.queryUp(UpdatePassword.this , num);
  60.                     SaveQQ.SaveUserInfo(UpdatePassword.this , map.get("account"), map.get("password"));
  61.                     Toast.makeText(UpdatePassword.this, "修改成功", Toast.LENGTH_SHORT).show();
  62.                 } else {
  63.                     Toast.makeText(UpdatePassword.this, "修改失败", Toast.LENGTH_SHORT).show();
  64.                 }
  65.             }
  66.         });
  67.     }
  68.     private void result() {
  69.         Intent intent = new Intent(UpdatePassword.this , login.class);
  70.         startActivity(intent);
  71.         finish();
  72.     }
  73.     @Override
  74.     public boolean onKeyDown(int keyCode, KeyEvent event) {
  75.         if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
  76.             result();
  77.         }
  78.         return false;
  79.     }
  80. }
复制代码
四、SQLite 与 SharedPreferences 操作

SQlite数据库存储主要用来保存用户信息,SharedPreferences存储主要用来实现记录账号与密码的功能,方便下次登录。
QQHelper.java 创建SQLite数据库:

  1. package com.example.datastorage;
  2. import android.content.Context;
  3. import android.database.sqlite.SQLiteDatabase;
  4. import android.database.sqlite.SQLiteOpenHelper;
  5. import androidx.annotation.Nullable;
  6. public class QQHelper extends SQLiteOpenHelper {
  7.     public QQHelper(@Nullable Context context) {
  8.         super(context, "qq.db", null, 1);
  9.     }
  10.     @Override
  11.     public void onCreate(SQLiteDatabase sqLiteDatabase) {
  12.         String sql = "create table user(_id Integer primary key AUTOINCREMENT,  account varchar(20) , num varchar(20), password varchar(20))";
  13.         sqLiteDatabase.execSQL(sql);
  14.     }
  15.     @Override
  16.     public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
  17.     }
  18. }
复制代码
QQperate.java 对SQLite数据库举行增、改、查操作:

  1. package com.example.datastorage;
  2. import android.annotation.SuppressLint;
  3. import android.content.ContentValues;
  4. import android.content.Context;
  5. import android.database.Cursor;
  6. import android.database.sqlite.SQLiteDatabase;
  7. import android.util.Log;
  8. import java.util.HashMap;
  9. import java.util.Map;
  10. public class QQperate {
  11.     //添加用户
  12.     public static int insert(Context context, String account, String num, String password) {
  13.         QQHelper qqHelper = new QQHelper(context);
  14.         SQLiteDatabase db = qqHelper.getWritableDatabase();
  15.         ContentValues values = new ContentValues();
  16.         values.put("account",account);
  17.         values.put("num",num);
  18.         values.put("password",password);
  19.         String sql = "select * from user where account=? or num=?";
  20.         Cursor cursor = db.rawQuery(sql, new String[]{account, num});
  21.         int f = 0;
  22.         if(cursor.getCount() == 0) {
  23.             db.insert("user",null,values);
  24.             f = 1;
  25.         }
  26.         db.close();
  27.         cursor.close();
  28.         return f;
  29.     }
  30.     //修改密码
  31.     public static int update(Context context, String num, String password) {
  32.         QQHelper qqHelper = new QQHelper(context);
  33.         SQLiteDatabase db = qqHelper.getWritableDatabase();
  34.         String sql = "update user set password=? where num=?";
  35.         Cursor cursor = db.query("user",null,"num=?",new String[]{num},null,null,null);
  36.         int f = 0;
  37.         if(cursor.getCount() != 0) {
  38.             db.execSQL(sql,new String[]{password, num});
  39.             f = 1;
  40.         }
  41.         db.close();
  42.         cursor.close();
  43.         return f;
  44.     }
  45.     //查询用户
  46.     public static int query(Context context, String account, String password) {
  47.         QQHelper qqHelper = new QQHelper(context);
  48.         SQLiteDatabase db = qqHelper.getWritableDatabase();
  49.         String sql = "select * from user where account=? and password=?";
  50.         Cursor cursor = db.rawQuery(sql,new String[]{account,password});
  51.         int f = 0;
  52.         if(cursor.getCount() != 0) f = 1;
  53.         db.close();
  54.         cursor.close();
  55.         return f;
  56.     }
  57.     //通过注册号码查询账号与密码
  58.     public static Map<String,String> queryUp(Context context, String num) {
  59.         QQHelper qqHelper = new QQHelper(context);
  60.         SQLiteDatabase db = qqHelper.getWritableDatabase();
  61.         String sql = "select * from user where num=?";
  62.         Cursor cursor = db.rawQuery(sql,new String[]{num});
  63.         Map<String,String> map = new HashMap<>();
  64.         if(cursor.moveToNext()) {
  65.             @SuppressLint("Range") String account = cursor.getString(cursor.getColumnIndex("account"));
  66.             @SuppressLint("Range") String password = cursor.getString(cursor.getColumnIndex("password"));
  67.             map.put("account",account);
  68.             map.put("password",password);
  69.         }
  70.         cursor.close();
  71.         db.close();
  72.         return map;
  73.     }
  74. }
复制代码
SaveQQ.java保存QQ账号与密码:

  1. package com.example.datastorage;
  2. import android.content.Context;
  3. import android.content.SharedPreferences;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6. public class SaveQQ {
  7.     public static void SaveUserInfo(Context context, String account, String password) {
  8.         SharedPreferences sharedPreferences = context.getSharedPreferences("QQuser",Context.MODE_PRIVATE);
  9.         SharedPreferences.Editor editor = sharedPreferences.edit();
  10.         editor.putString("account",account);
  11.         editor.putString("password",password);
  12.         editor.apply();
  13.     }
  14.     public static Map<String,String> getUserInfo(Context context) {
  15.         SharedPreferences sharedPreferences = context.getSharedPreferences("QQuser",Context.MODE_PRIVATE);
  16.         String account = sharedPreferences.getString("account",null);
  17.         String password = sharedPreferences.getString("password",null);
  18.         Map<String,String> map = new HashMap<>();
  19.         map.put("account",account);
  20.         map.put("password",password);
  21.         return map;
  22.     }
  23. }
复制代码
五、登录乐成界面

activity_zhujian.xml 代码:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     android:layout_width="match_parent"
  5.     android:layout_height="match_parent"
  6.     android:background="@drawable/bgqq">
  7.     <LinearLayout
  8.         android:layout_width="wrap_content"
  9.         android:layout_height="wrap_content"
  10.         android:layout_centerInParent="true"
  11.         android:orientation="vertical">
  12.         <ImageView
  13.             android:id="@+id/imageView2"
  14.             android:layout_width="150dp"
  15.             android:layout_height="150dp"
  16.             android:layout_centerHorizontal="true"
  17.             android:layout_centerVertical="true"
  18.             app:srcCompat="@drawable/succeeded" />
  19.         <TextView
  20.             android:id="@+id/textView6"
  21.             android:layout_width="wrap_content"
  22.             android:layout_height="wrap_content"
  23.             android:layout_gravity="center"
  24.             android:textColor="#2C2C2C"
  25.             android:textSize="28sp"
  26.             android:text="登录成功" />
  27.     </LinearLayout>
  28. </RelativeLayout>
复制代码
zhujianActivity.java 代码:
  1. package com.example.datastorage;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. public class zhujianActivity extends AppCompatActivity {
  5.     @Override
  6.     protected void onCreate(Bundle savedInstanceState) {
  7.         super.onCreate(savedInstanceState);
  8.         setContentView(R.layout.activity_zhujian);
  9.     }
  10. }
复制代码

六、 styles.xml 和AndroidManifest.xml

在创建Activity之后,必要对创建的Activity举行配置,在AndroidManifest.xml中可以看到Activity的配置,其中exported根据必要设置,启动模式可以选择默认,stles.xml里面设置的是竖线。(AndroidManifest.xml 中有不是登录注册的Activity配置,不要混淆)
styles.xml 代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3.     <style name="vLine">
  4.         <item name="android:layout_width">2dp</item>
  5.         <item name="android:layout_height">18dp</item>
  6.         <item name="android:layout_gravity">center</item>
  7.         <item name="android:background">#7D978B</item>
  8.     </style>
  9. </resources>
复制代码
AndroidManifest.xml 代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:tools="http://schemas.android.com/tools">
  4.     <application
  5.         android:allowBackup="true"
  6.         android:dataExtractionRules="@xml/data_extraction_rules"
  7.         android:fullBackupContent="@xml/backup_rules"
  8.         android:icon="@drawable/cc"
  9.         android:label="@string/app_name"
  10.         android:supportsRtl="true"
  11.         android:theme="@style/Theme.DataStorage"
  12.         tools:targetApi="31">
  13.         <activity
  14.             android:name=".zhujianActivity"
  15.             android:exported="true" />
  16.         <activity
  17.             android:launchMode="singleTask"
  18.             android:name=".UpdatePassword"
  19.             android:exported="true" />
  20.         <activity
  21.             android:launchMode="singleTask"
  22.             android:name=".register"
  23.             android:exported="true" />
  24.         <activity
  25.             android:launchMode="singleTask"
  26.             android:name=".login"
  27.             android:exported="true" />
  28.         <activity
  29.             android:name=".SQLiteSave"
  30.             android:exported="true"
  31.             android:launchMode="singleTask" />
  32.         <activity
  33.             android:name=".FileSave"
  34.             android:exported="true"
  35.             android:launchMode="singleTask" />
  36.         <activity
  37.             android:name=".SPSave"
  38.             android:exported="true"
  39.             android:launchMode="singleTask" />
  40.         <activity
  41.             android:name=".MainActivity"
  42.             android:exported="true">
  43.             <intent-filter>
  44.                 <action android:name="android.intent.action.MAIN" />
  45.                 <category android:name="android.intent.category.LAUNCHER" />
  46.             </intent-filter>
  47.         </activity>
  48.     </application>
  49. </manifest>
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表