• Bmob移动后端云服务平台--Android从零開始--(二)android高速入门


    Bmob移动后端云服务平台--Android从零開始--(二)android高速入门

    上一篇博文我们简介何为Bmob移动后端服务平台,以及其相关功能和优势。

    本文将利用Bmob高速实现简单样例,进一步了解它的强大之处。

    一、准备工作

    1.注冊Bmob账号

    在网址栏输入www.bmob.cn或者在百度输入Bmob进行搜索,打开Bmob官网后。点击右上角的“注冊”,在跳转页面填入你的姓名、邮箱、设置password,确认后到你的邮箱激活Bmob账户。你就能够用Bmob轻松开发应用了。


    2.站点后台创建应用

    登录账号进入bmob后台后,点击后台界面左上角“创建应用”。在弹出框输入你应用的名称,然后确认,你就拥有了一个等待开发的应用。



    3.获取应用密钥和下载SDK

    选择你要开发的应用,点击该应用下方相应的“应用密钥”


    在跳转页面。获取Application ID,此ID将会在初始化SDK中使用到。


    获取Application ID后。下载SDK。开发人员能够依据自己的需求选择对应的iOS SDK 或Android SDK,点击下载就可以。




    二、代码实现

    需求:本实例简单的实现用户利用username和password进行注冊。

    注冊成功后。利用注冊的数据,进行登陆,操作成功后给出对应的提示。

    代码实现步骤:

    1> 引入BmobSDK 架包

    将下载的BmobSDK中包括例如以下的架包引入到Android应用


    2> 在清单文件里加入例如以下的权限

    <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功能。

    代码例如以下所看到的:

       @Override
        protected void onCreate(Bundle savedInstanceState) {
             // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
             // 初始化 Bmob SDK
            // 使用时请将第二个參数Application ID替换成你在Bmobserver端创建的Application ID
            Bmob.initialize(this, "Your Application ID");
        }
    4>创建继承于BmobObject的实体UserBean

    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平台server数据


    5>相关的布局文件和清单文件

    1.清单文件,AndroidManifest.xml

    <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

    本实例须要一个username的EditText和password的EditText,以及注冊和登陆的Button。

    <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="username:"
                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

    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");
    		/**
    		 * 保存数据到Bmobserver
    		 */
    		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

    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

    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();
    	}
    	
    }
    


    源代码路径:http://download.csdn.net/detail/a123demi/8283761


  • 相关阅读:
    Atitit topic index Abt 150 toic [原]Atitit hi dev eff topic by use dsl sql coll op 提升开发效率sql ds
    Atitit xml转json总结 目录 1.1. XML和JSON之间没有直接映射;元素类型问题 1 1.2. Xml与json的对应关系 2 1.3. 范例 2 2. Jsonlib的问题,,不
    Atitit stomp.js conn连接activemq 目录 1.1. activemq 启动,已经默认开启了stomp ws的接口。。地址是 1 1.2. Js 客户端代码 1 1.3
    Atitit 业务领域体系分类 目录 1. 按照互联网企业类型以及只是体系类的分类 2 2. 电子商务 2 3. **通信类社交 Im类 em 2 4. **信息搜索类爬虫 2 4.1. 媒体
    atitit software sys 软件技术领域工业体系.docx 目录 1. 技术领域一级大类10大类 2 2. 理论与软件设计方法学 2 2.1. 计算机原理 计算机科学导论 2 2.2.
    Atitit api design Usability simple 易用性之简单化设计 目录 1. 理论原则 2 1.1. 概念简单 2 1.2. 切换到了“write less, do more
    Atitit 远程工作的几种办公模式 目录 1. 未来的趋势 远程办公 1 1.1. 遥远的阴影 1 1.2. 一个单中心的团队,是一个团队,每个人都被共处于同一物理位置。 2 1.3. 一个多站
    Atitit 保证产品易用性的方法总结 目录 1. 什么是易用性 易学 易见 三角关系 1 2. 易用性原理 三原则 易见 映射 反馈 2 2.1. 易见 Visibility 可读性 2 2.2.
    Atitit 高级人员要看哪些源码 目录 1. Ati看过的源码 1 1.1. Ui类 1 1.2. Mvc类 1 1.3. 数据库类 1 1.4. 算法类 1 2. 看源码的意义 2 2.1. 一
    Atitit 初级 中级 高级 软件工程师的区别 非功能性需求 目录 1. 初级 业务功能 1 1.1. 中级 独立完成业务功能 已经非常见api功能 更加广阔 1 2. 高级 非功能性需求
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7079275.html
Copyright © 2020-2023  润新知