Android借助bmob实现简单的登陆注册
欢迎下载
https://github.com/kurumi2501314/Bmobdemo/blob/master/demo.apk
实现步骤
详细可以去我的github
https://github.com/kurumi2501314/Bmobdemo
只是将官方文档稍作了修改,详细更改还是去官方文档。
1注册bmob
去bmob官网注册,地址
https://www.bmob.cn/
然后在我的控制台创建应用,之后
我的这里是demo,点击进入你新进的那个应用,例如我进入demo
设置里的第一个Application ID就是之后需要的。数据里是你建的表,默认有一个user表,如果需要扩充,如性别,简介,兴趣爱好这些需要一个子类继承bmobuser类进行扩展。
2配置Bomb相关
1配置SDK
源于官网文档
2配置权限和ContentProvider
打开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" />
然后配置ContentProvider
<application>
···
<provider
android:name="cn.bmob.v3.util.BmobContentProvider"
android:authorities="你的应用包名.BmobContentProvider">
</provider>
···
</application>
这两个都是官网文档的,这里直接引用。
3初始化bmob
在活动的oncreate方法里初始化
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bmob.initialize(this,"这里填写你自己的id,就是第一步注册后看到的那个");
````
}
3扩展自己的用户列表
BmobUser默认里没有昵称,性别这些,所以如果用的话需要继承然后扩展,新建Myuser类继承BmobUser。
package com.example.bmobdemo;
import cn.bmob.v3.BmobUser;
public class MyUser extends BmobUser {
//补充其他属性
private String fakename;//昵称
private String introd;//简介
private String sex; //性别
private String interesting; //兴趣爱好
public String getFakename()
{
return fakename;
}
public void setFakename(String fakename)
{
this.fakename=fakename;
}
public String getIntrod()
{
return introd;
}
public void setIntrod(String introd)
{
this.introd=introd;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex=sex;
}
public String getInteresting()
{
return interesting;
}
public void setInteresting(String interesting)
{
this.interesting=interesting;
}
}
4实现注册
默认在登陆页,当点击注册按钮后进入注册界面,填写相关信息。
布局就是线性布局然后向里面填充,然后密码栏选择了password属性的Edittext所以是不可见的,布局不再赘述,详细可以去我git看全部,这里主要是活动里。
活动也很简单,先初始化布局控件,然后判断点击,再添加点击事件。关于注册方法bmob给封装了,在官方文档是这样的:
private void signUp(final View view) {
final User user = new User();
user.setUsername("" + System.currentTimeMillis());
user.setPassword("" + System.currentTimeMillis());
user.setAge(18);
user.setGender(0);
user.signUp(new SaveListener<User>() {
@Override
public void done(User user, BmobException e) {
if (e == null) {
Snackbar.make(view, "注册成功", Snackbar.LENGTH_LONG).show();
} else {
Snackbar.make(view, "尚未失败:" + e.getMessage(), Snackbar.LENGTH_LONG).show();
}
}
});
}
这里稍作修改,关键部分如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
Bmob.initialize(this,"我的应用id");
initview(); //初始化布局
setListen();//设置监听
}
private void setListen() {
re_sgin_btn.setOnClickListener(this);
}
private void initview() {
//省略
}
@Override
public void onClick(View v) {
if(v.getId()==R.id.sgin_up_btn)
{
signup();
}
}
private void signup() {
final MyUser myUser=new MyUser();
myUser.setUsername(re_username.getText().toString().trim());
myUser.setPassword(re_possword.getText().toString().trim());
myUser.setFakename(re_fake.getText().toString().trim());
myUser.setSex(re_sex.getText().toString().trim());
myUser.setIntrod(re_intro.getText().toString().trim());
myUser.setInteresting(re_inter.getText().toString().trim());
myUser.signUp(new SaveListener<MyUser>() {
@Override
public void done(MyUser user, BmobException e)
{
if (e==null)
{
Toast.makeText(getApplicationContext(),"注册成功",Toast.LENGTH_LONG).show();
Intent intent=new Intent(SignupActivity.this,MainActivity.class); //注册成功就去登陆页,其实finish()也行。
startActivity(intent);
}
}
});
}
5实现登陆
布局就是开始效果图那样,不再赘述
登陆活动的关键部分如下
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.signin:
login();
break;
case R.id.signup:
Intent intent1=new Intent(MainActivity.this,SignupActivity.class);
startActivity(intent1);
}
}
private void login() {
final MyUser user=new MyUser();
final String username=username_signin.getText().toString().trim();
final String password=userpassword_signin.getText().toString().trim();
user.setUsername(username);
user.setPassword(password);
user.login(new SaveListener<MyUser>() {
@Override
public void done(MyUser myUser, BmobException e)
{
if(e==null)
{
MyUser user=MyUser.getCurrentUser(MyUser.class);
Intent intent =new Intent(MainActivity.this,nextActivity.class);
startActivity(intent);
Toast.makeText(getApplicationContext(),"登陆成功",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(),""+e.getMessage(),Toast.LENGTH_LONG).show();
}
}
});
}
详细可以去我github去看完整
https://github.com/kurumi2501314/Bmobdemo
欢迎下载
https://github.com/kurumi2501314/Bmobdemo/blob/master/demo.apk