借助bmob實作簡單的登陸注冊
- 實作步驟
-
- 1注冊bmob
- 2配置Bomb相關
- 3擴充自己的使用者清單
- 4實作注冊
- 5實作登陸
-
歡迎下載下傳
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