一、准备工作
1.注册Bmob账号
在网址栏输入www.bmob.cn或者在百度输入Bmob进行搜索,打开Bmob官网后,点击右上角的“注册”,在跳转页面填入你的姓名、邮箱、设置密码,确认后到你的邮箱激活Bmob账户,你就可以用Bmob轻松开发应用了。
2.网站后台创建应用
登录账号进入bmob后台后,点击后台界面左上角“创建应用”,在弹出框输入你应用的名称,然后确认,你就拥有了一个等待开发的应用。
3.获取应用密钥和下载SDK
选择你要开发的应用,点击该应用下方对应的“应用密钥”
在跳转页面,获取Application ID,此ID将会在初始化SDK中使用到。
获取Application ID后,下载SDK,开发者可以根据自己的需求选择相应的iOS SDK 或Android SDK,点击下载即可。
二、代码实现
需求:本实例简单的实现用户利用用户名和密码进行注册。注册成功后,利用注册的数据,进行登陆,操作成功后给出相应的提示。
代码实现步骤:
1> 引入BmobSDK 架包
将下载的BmobSDK中包含如下的架包引入到Android应用
2> 在清单文件中添加如下的权限
[html] view plain
copy
print ?
- <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"/>
3> 初始化BmobSDK
在你应用程序启动的Activity的onCreate()方法中初始化Bmob功能。代码如下所示:
[html] view plain
copy
print ?
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- // 初始化 Bmob SDK
- // 使用时请将第二个参数Application ID替换成你在Bmob服务器端创建的Application ID
- Bmob.initialize(this, "Your Application ID");
- }
4>创建继承于BmobObject的实体UserBean
[html] view plain
copy
print ?
- package com.example.bmobdemo.bean;
-
- import cn.bmob.v3.BmobObject;
-
- /**
- *
- *
- * 项目名称:BmobDemo
- * 类名称:UserBean
- * 类描述: 继承BmobObject的用户实体类
- * 创建时间:2014年12月18日 下午10:25:40
- * 修改人:Administrator
- * 修改时间:2014年12月18日 下午10:25:40
- * 修改备注:
- * @version
- *
- */
- 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 + "]";
- }
-
-
-
- }
4>案例效果
Bmob平台服务器数据
5>相关的布局文件和清单文件
1.清单文件,AndroidManifest.xml
[html] view plain
copy
print ?
- <span style="font-size:18px;">xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.bmobdemo"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk
- android:minSdkVersion="17"
- android:targetSdkVersion="19" />
-
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- <uses-permission android:name="android.permission.READ_PHONE_STATE" />
- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.READ_LOGS" />
-
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name="com.example.bmobdemo.MainActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
-
- <category android:name="android.intent.category.LAUNCHER" />
- intent-filter>
- activity>
- application>
-
- manifest>span>
2.主布局文件,activity_main.xml
本实例需要一个用户名的EditText和密码的EditText,以及注册和登陆的Button。
[html] view plain
copy
print ?
- <span style="font-size:18px;"><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" >
-
- <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/id_login_name_et"
- 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/id_password_et"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" />
- LinearLayout>
-
- <Button
- android:id="@+id/id_register_btn"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="10dp"
- android:text="注册"
- android:textColor="#0000FF" />
-
- <Button
- android:id="@+id/id_login_btn"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="登陆"
- android:textColor="#0000FF" />
-
- LinearLayout>span>
5>java实现代码
1.主界面代码MainActivity.java
[html] view plain
copy
print ?
- package com.example.bmobdemo;
-
- import java.util.List;
-
- import cn.bmob.v3.Bmob;
- import cn.bmob.v3.BmobQuery;
- import cn.bmob.v3.listener.FindListener;
- import cn.bmob.v3.listener.SaveListener;
-
- import com.example.bmobdemo.bean.UserBean;
- import com.example.bmobdemo.util.ToastUtils;
-
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
-
- public class MainActivity extends Activity implements OnClickListener {
-
- // Bmob应用创建建时获取的Application id,根据自己创建的应用来写入
- private static final String BMOB_APPLICATION_ID = "be783fdda4eac8a781a9f80596e98fe0";
- private Button registerBtn, loginBtn;
- private EditText loginEt, passwordEt;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- /**
- * 初始化BmobSDK
- */
- Bmob.initialize(this, BMOB_APPLICATION_ID);
- initView();
- }
-
- /**
- *
- * 初始化控件
- */
- private void initView() {
- registerBtn = (Button) this.findViewById(R.id.id_register_btn);
- loginBtn = (Button) this.findViewById(R.id.id_login_btn);
- loginEt = (EditText) this.findViewById(R.id.id_login_name_et);
- passwordEt = (EditText) this.findViewById(R.id.id_password_et);
-
- registerBtn.setOnClickListener(this);
- loginBtn.setOnClickListener(this);
-
- }
-
- /**
- * 注册
- */
- private void register() {
- String loginId = loginEt.getText().toString();
- String password = passwordEt.getText().toString();
- if (loginId.isEmpty() || password.isEmpty()) {
- ToastUtils.toast(this, "密码或账号不为空!");
- return;
- }
-
- final UserBean userBean = new UserBean();
- userBean.setLoginId(loginId);
- userBean.setPassword(password);
- userBean.setUserName("Bmob");
- /**
- * 保存数据到Bmob服务器
- */
- userBean.save(this, new SaveListener() {
-
- @Override
- public void onSuccess() {
- ToastUtils.toast(MainActivity.this, userBean.toString()
- + " 注册成功");
- }
-
- @Override
- public void onFailure(int arg0, String arg1) {
- ToastUtils.toast(MainActivity.this, arg0 + "," + arg1 + " 注册失败");
- }
- });
-
- }
-
- /**
- * 登陆
- */
- private void login() {
- String loginId = loginEt.getText().toString();
- String password = passwordEt.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(this, new FindListener<UserBean>() {
-
- @Override
- public void onError(int arg0, String arg1) {
- ToastUtils.toast(MainActivity.this, arg0 + "," + arg1 + " 登陆失败");
- }
-
- @Override
- public void onSuccess(List<UserBean> userList) {
- if (userList != null && userList.size() > 0)
- ToastUtils.toast(MainActivity.this, " 登陆成功");
- else {
- ToastUtils.toast(MainActivity.this, " 登陆失败");
- }
- }
- });
- }
-
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.id_register_btn:
- register();
- break;
- case R.id.id_login_btn:
- login();
- break;
- }
- }
-
- }
2.实体类UserBean
[html] view plain
copy
print ?
- package com.example.bmobdemo.bean;
-
- import cn.bmob.v3.BmobObject;
-
- /**
- *
- *
- * 项目名称:BmobDemo
- * 类名称:UserBean
- * 类描述: 继承BmobObject的用户实体类
- * 创建时间:2014年12月18日 下午10:25:40
- * 修改人:Administrator
- * 修改时间:2014年12月18日 下午10:25:40
- * 修改备注:
- * @version
- *
- */
- 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 + "]";
- }
-
-
-
- }
3.工具类ToastUtils.java
[html] view plain
copy
print ?
- package com.example.bmobdemo.util;
-
- import android.content.Context;
- import android.widget.Toast;
-
- /**
- * Toast提示工具类
- * createdTime: 2014年12月18日 下午10:55:21
- *
- */
- 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();
- }
-
- }