用户注册登录"/>
Android + Bmob 实现用户注册登录
用户登录思路
- 如果已经登录APP, 跳转到主页面
- 如果没有登录APP,跳转到登录界面
- 没有账号 —— 注册
- 已有账号 —— 登录
具体实现
1. 在Bmob里新建一个应用
1.1 登录/注册Bmob后,点击创建应用按钮
1.2 起名 —— 选择开发免费版 —— 创建应用,就ok啦
1.3 查看Application ID
点开创建的应用,在设置里面可以看到非常重要的 Application ID(后面会用到)
2. Bmob SDK导入
2.1添加依赖
参考官方文档:.html#sdk_1
在app
的build.gradle
文件中添加依赖文件
:
dependencies {implementation 'io.github.bmob:android-sdk:3.8.13'implementation 'io.reactivex.rxjava2:rxjava:2.2.8'implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'implementation 'com.squareup.okhttp3:okhttp:4.8.1'implementation 'com.squareup.okio:okio:2.2.2'implementation 'com.google.code.gson:gson:2.8.5'
}
同步后,可以看到
2.2 配置AndroidManifest.xml
参考官方文档:.html#androidmanifestxml
在AndroidManifest.xml
文件中添加相应的权限:
<!--允许联网 -->
<uses-permission android:name="android.permission.INTERNET" />
<!--获取GSM(2g)、WCDMA(联通3g)等网络状态的信息 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--获取wifi网络状态的信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--保持CPU 运转,屏幕和键盘灯有可能是关闭的,用于文件上传和下载 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--获取sd卡写的权限,用于文件上传和下载-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许读取手机状态 用于创建BmobInstallation-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
2.3 配置ContentProvider
在AndroidManifest.xml
文件的application
里添加
<application>
···
<providerandroid:name="cn.bmob.v3.util.BmobContentProvider"android:authorities="你的应用包名.BmobContentProvider">
</provider>
···
</application>
2.4 初始化BmobSDK
哪里需要就在哪里写,我是写在SplashActivity里面的(Splash是我的app点开的页面,我需要在这里判断是否需要登录,以及跳转操作)
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import java.util.Timer;
import java.util.TimerTask;
import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobUser;
import cn.ziwei.zyapp.Bean.User;public class SplashActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_splash);// 延时操作,延时2秒Timer timer = new Timer();timer.schedule(timetask, 2000);// 初始化BmobSDK// 第二个参数appkey: 是第一步创建的应用里面的Application IDBmob.initialize(this, "xxxxxxxxxx");}TimerTask timetask = new TimerTask() {@Overridepublic void run() {// 判断用户是否登录// 已登录,跳转到主界面;未登陆,调转到登录界面BmobUser bmobUser = BmobUser.getCurrentUser(User.class);if (bmobUser!=null){// 已登录,跳转到主界面MainActivitystartActivity(new Intent(SplashActivity.this, MainActivity.class));finish();}else {// 未登录,跳转到登录界面LoginActivitystartActivity(new Intent(SplashActivity.this, LoginActivity.class));finish();}}};
}
3. 实现登录操作
3.1 LoginActivity代码
import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.SaveListener;
import cn.ziwei.zyapp.Bean.User;public class LoginActivity extends AppCompatActivity {private EditText username, password; // 登录年龄、密码private Button login_btn, register_btn; // 登录按钮、注册按钮@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);username = findViewById(R.id.username);password = findViewById(R.id.password);login_btn = findViewById(R.id.login);register_btn = findViewById(R.id.register);// 登录按钮,设置点击事件login_btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// 登录User user = new User(); // 自己写的User类,继承BmobUser,只有一个nickname属性// 设置登录的账号user.setUsername(username.getText().toString().trim());// 设置登录的密码user.setPassword(password.getText().toString().trim());user.login(new SaveListener<User>() {@Overridepublic void done(User bmobUser, BmobException e) {if (e == null) {// 登录成功,跳转到主界面Toast.makeText(LoginActivity.this, "登录成功!", Toast.LENGTH_SHORT).show();startActivity(new Intent(LoginActivity.this, MainActivity.class));finish();} else {Toast.makeText(LoginActivity.this, "用户名/密码错误,登录失败!", Toast.LENGTH_SHORT).show();}}});}});}
}
3.2 activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_margin="20dp"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:gravity="center"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="账号:"android:textColor="#000"android:textSize="24sp"android:textStyle="bold" /><EditTextandroid:id="@+id/username"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入账号" /></LinearLayout><LinearLayoutandroid:layout_marginTop="20dp"android:gravity="center"android:orientation="horizontal"android:layout_width="300dp"android:layout_height="wrap_content"><TextViewandroid:textColor="#000"android:textStyle="bold"android:textSize="24sp"android:text="密码:"android:layout_width="wrap_content"android:layout_height="wrap_content"/><EditTextandroid:id="@+id/password"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入密码"/></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"><Buttonandroid:id="@+id/login"android:layout_margin="20dp"android:textSize="24sp"android:textColor="#fff"android:background="@color/cardview_dark_background"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="登录"/><Buttonandroid:id="@+id/register"android:layout_margin="20dp"android:textSize="24sp"android:textColor="#fff"android:background="@color/cardview_dark_background"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="注册"/></LinearLayout>
</LinearLayout>
4. 在Bmob应用,添加用户的数据
打开应用,点击数据,会有一个默认的_User表
首先添加自己需要的列:username,password(和代码里面的id保持一致)
然后添加行,也就是数据。再进行登录操作的时候,回到这里来检测,用户名称、密码是否正确
4. 实现注册操作
4.1 在实现登录界面已经设置了注册按钮,于是在LoginActicity添加注册按钮的点击事件
// 注册按钮,设置点击事件
register_btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {startActivity(new Intent(LoginActivity.this, RegisterActivity.class));}
});
4.2 RegisterActivity
import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.SaveListener;
import cn.ziwei.zyapp.Bean.User;public class RegisterActivity extends AppCompatActivity {private EditText username, password, nickname; // 登录年龄、密码、昵称private Button register_btn; // 注册按钮@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_register);username = findViewById(R.id.username);password = findViewById(R.id.password);nickname = findViewById(R.id.nickname);register_btn = findViewById(R.id.register);// 注册按钮,设置点击事件register_btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {User user = new User();user.setUsername(username.getText().toString().trim());user.setPassword(username.getText().toString().trim());user.setNickname(nickname.getText().toString().trim());// 判断用户名是否为空if (username.getText().toString().equals("")){Toast.makeText(RegisterActivity.this, "用户名为空", Toast.LENGTH_SHORT).show();}// 判断密码是否为空if (password.getText().toString().equals("")){Toast.makeText(RegisterActivity.this, "用户密码为空", Toast.LENGTH_SHORT).show();}// 注册user.signUp(new SaveListener<User>() {@Overridepublic void done(User user, BmobException e) {if (e == null){Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();finish();// 跳转到登录界面startActivity(new Intent(RegisterActivity.this, LoginActivity.class));}else {Toast.makeText(RegisterActivity.this, "注册失败", Toast.LENGTH_SHORT).show();}}});}});}
}
4.3 activity_register.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_margin="20dp"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:layout_width="300dp"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:gravity="center"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="账号:"android:textColor="#000"android:textSize="24sp"android:textStyle="bold" /><EditTextandroid:id="@+id/username"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入账号" /></LinearLayout><LinearLayoutandroid:layout_marginTop="20dp"android:gravity="center"android:orientation="horizontal"android:layout_width="300dp"android:layout_height="wrap_content"><TextViewandroid:textColor="#000"android:textStyle="bold"android:textSize="24sp"android:text="密码:"android:layout_width="wrap_content"android:layout_height="wrap_content"/><EditTextandroid:id="@+id/password"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入密码"/></LinearLayout><LinearLayoutandroid:layout_marginTop="20dp"android:gravity="center"android:orientation="horizontal"android:layout_width="300dp"android:layout_height="wrap_content"><TextViewandroid:textColor="#000"android:textStyle="bold"android:textSize="24sp"android:text="昵称:"android:layout_width="wrap_content"android:layout_height="wrap_content"/><EditTextandroid:id="@+id/nickname"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入昵称"/></LinearLayout></LinearLayout><Buttonandroid:id="@+id/register"android:layout_margin="20dp"android:textSize="24sp"android:textColor="#fff"android:background="@color/cardview_dark_background"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="注册"/>
</LinearLayout>
4.4 可以查看Bmob里面的表,新数据已存在
这样一个简单的用户登录注册,就实现啦~~~
更多推荐
Android + Bmob 实现用户注册登录
发布评论