一、準備工作
1.注冊Bmob賬号
在網址欄輸入www.bmob.cn或者在百度輸入Bmob進行搜尋,打開Bmob官網後,點選右上角的“注冊”,在跳轉頁面填入你的姓名、郵箱、設定密碼,确認後到你的郵箱激活Bmob賬戶,你就可以用Bmob輕松開發應用了。
2.網站背景建立應用
登入賬号進入bmob背景後,點選背景界面左上角“建立應用”,在彈出框輸入你應用的名稱,然後确認,你就擁有了一個等待開發的應用。
3.擷取應用密鑰和下載下傳SDK
選擇你要開發的應用,點選該應用下方對應的“應用密鑰”
擷取Application ID後,下載下傳SDK,開發者可以根據自己的需求選擇相應的iOS SDK 或Android SDK,點選下載下傳即可。
不過我一般喜歡線上配置,是以我就沒下載下傳這個。
二、代碼實作
1、在project的grade添加一下語句
在app的grade條件以下語句
2、在清單檔案中添加如下的權限
3、初始化BmobSDK
在你應用程式啟動的Activity的onCreate()方法中初始化Bmob功能。代碼如下所示:
4、建立繼承于BmobObject的實體UserBean
package com.example.wzh.bmobtest2.bean;
import cn.bmob.v3.BmobObject;
/**
* Author by wzh,Date on 2019/3/17.
* PS: Not easy to write code, please indicate.
* 類描述: 繼承BmobObject的使用者實體類
*/
public class UserBean extends BmobObject {
private static final long serialVersionUID = 1L;
private String loginId;
private String userName;
private String password;
public String getLoginId() {
return loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "UserBean [loginId=" + loginId + ", userName=" + userName
+ ", password=" + password + "]";
}
}
5、案例效果
Bmob平台伺服器資料
6、相關的布局檔案和清單檔案
1.清單檔案,AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.wzh.bmobtest2">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_LOGS"
tools:ignore="ProtectedPermissions" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider
android:name="cn.bmob.v3.util.BmobContentProvider"
android:authorities="com.example.wzh.bmobtest2.BmobContentProvider">
</provider>
</application>
</manifest>
2.主布局檔案,activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="使用者名:"
android:textColor="#FF0000" />
<EditText
android:id="@+id/et_login_name"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="密碼:"
android:textColor="#FF0000" />
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<Button
android:id="@+id/btn_register"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="注冊"
android:textColor="#0000FF" />
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登陸"
android:textColor="#0000FF" />
</LinearLayout>
主界面代碼MainActivity.java
package com.example.wzh.bmobtest2;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import com.example.wzh.bmobtest2.bean.UserBean;
import com.example.wzh.bmobtest2.util.ToastUtils;
import java.util.List;
import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.BmobUser;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.FindListener;
import cn.bmob.v3.listener.SaveListener;
import static com.example.wzh.bmobtest2.R.id.btn_register;
public class MainActivity extends Activity implements OnClickListener {
// Bmob應用建立建時擷取的Application id,根據自己建立的應用來寫入
private static final String BMOB_APPLICATION_ID = "812b06a63357a00af19cfb0d5afbe1e0";
Button btn_register, btn_login;
EditText et_login_name, et_password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化 Bmob SDK
// 使用時請将第二個參數Application ID替換成你在Bmob伺服器端建立的Application ID
Bmob.initialize(this, BMOB_APPLICATION_ID);
initView();
}
/**
*
* 初始化控件
*/
private void initView() {
btn_register = (Button) this.findViewById(R.id.btn_register);
btn_login = (Button) this.findViewById(R.id.btn_login);
et_login_name = (EditText) this.findViewById(R.id.et_login_name);
et_password = (EditText) this.findViewById(R.id.et_password);
btn_register.setOnClickListener(this);
btn_login.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_register:
register();
break;
case R.id.btn_login:
login();
break;
}
}
private void register() {
String loginId = et_login_name.getText().toString();
String password = et_password.getText().toString();
if (loginId.isEmpty() || password.isEmpty()) {
ToastUtils.toast(this, "密碼或賬号不為空!");
return;
}
final UserBean us = new UserBean();
us.setLoginId(loginId);
us.setPassword(password);
us.setUserName("Bmob");
/**
* 儲存資料到Bmob伺服器
*/
us.save(new SaveListener<String>() {
@Override
public void done(String objectId, BmobException e) {
if(e==null){
ToastUtils.toast(MainActivity.this, us.toString()
+ " 注冊成功");
}else{
int arg0 = 0;
String arg1 = null;
ToastUtils.toast(MainActivity.this, arg0 + "," + arg1 + " 注冊失敗");
}
}
});
}
private void login() {
String loginId = et_login_name.getText().toString();
String password = et_password.getText().toString();
if (loginId.isEmpty() || password.isEmpty()) {
ToastUtils.toast(this, "密碼或賬号不為空!");
return;
}
BmobQuery<UserBean> userQuery = new BmobQuery<UserBean>();
// 查詢條件
userQuery.addWhereEqualTo("loginId", loginId);
userQuery.addWhereEqualTo("password", password);
userQuery.findObjects(new FindListener<UserBean>() {
@Override
public void done(List<UserBean> list, BmobException e) {
if (list != null && list.size() > 0)
ToastUtils.toast(MainActivity.this, " 登陸成功");
else {
int arg0 = 0;
String arg1 = null;
ToastUtils.toast(MainActivity.this, arg0 + "," + arg1 + " 登陸失敗");
}
}
});
}
}
實體類UserBean
package com.example.wzh.bmobtest2.bean;
import cn.bmob.v3.BmobObject;
/**
* Author by wzh,Date on 2019/3/17.
* PS: Not easy to write code, please indicate.
* 類描述: 繼承BmobObject的使用者實體類
*/
public class UserBean extends BmobObject {
private static final long serialVersionUID = 1L;
private String loginId;
private String userName;
private String password;
public String getLoginId() {
return loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "UserBean [loginId=" + loginId + ", userName=" + userName
+ ", password=" + password + "]";
}
}
工具類ToastUtils.java
package com.example.wzh.bmobtest2.util;
import android.content.Context;
import android.widget.Toast;
/**
* Author by wzh,Date on 2019/3/17.
* PS: Not easy to write code, please indicate.
* Toast提示工具類
*/
public class ToastUtils {
public static void toast(Context context, String msg){
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
public static void toast(Context context,int msgId){
Toast.makeText(context, msgId, Toast.LENGTH_SHORT).show();
}
}