天天看點

Android借助bmob實作簡單的登陸注冊實作步驟

借助bmob實作簡單的登陸注冊

  • 實作步驟
    • 1注冊bmob
    • 2配置Bomb相關
    • 3擴充自己的使用者清單
    • 4實作注冊
    • 5實作登陸
Android借助bmob實作簡單的登陸注冊實作步驟
Android借助bmob實作簡單的登陸注冊實作步驟

歡迎下載下傳

https://github.com/kurumi2501314/Bmobdemo/blob/master/demo.apk

實作步驟

詳細可以去我的github

https://github.com/kurumi2501314/Bmobdemo

隻是将官方文檔稍作了修改,詳細更改還是去官方文檔。

1注冊bmob

去bmob官網注冊,位址

https://www.bmob.cn/

然後在我的控制台建立應用,之後

Android借助bmob實作簡單的登陸注冊實作步驟

我的這裡是demo,點選進入你新進的那個應用,例如我進入demo

Android借助bmob實作簡單的登陸注冊實作步驟

設定裡的第一個Application ID就是之後需要的。資料裡是你建的表,預設有一個user表,如果需要擴充,如性别,簡介,興趣愛好這些需要一個子類繼承bmobuser類進行擴充。

2配置Bomb相關

1配置SDK

Android借助bmob實作簡單的登陸注冊實作步驟

源于官網文檔

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實作注冊

預設在登陸頁,當點選注冊按鈕後進入注冊界面,填寫相關資訊。

Android借助bmob實作簡單的登陸注冊實作步驟

布局就是線性布局然後向裡面填充,然後密碼欄選擇了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