作为一个开发者,数据的存储,用户的登陆,验证等操作,对程序来说是必不可少的,下面我们将从Bmob的基本信息开始讲起:

【Bmob】

官网:   http://www.bmob.cn/

帮助文档:http://www.bmob.cn/site/getdocs

基本操作:http://docs.bmob.cn/android/faststart/index.html?menukey=fast_start&key=start_android

SDK下载: http://www.bmob.cn/site/sdk

【用户的基本操作】

Ⅰ用户注册:

用户注册的表有两种,一种继承BmobUser,一种继承BmobObject,但是大部分作为用户的注册使用的一般是BmobUser

JavaBean代码:

public class Students extends BmobUser {
private int age;
private String address; public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} public int getAge() { return age;
} public void setAge(int age) {
this.age = age;
}
}

实现方法:

private void showRegist() {
//用户注册的方法
String userName=edt_user.getText().toString();
String password=edt_password.getText().toString();
Students stu=new Students();
stu.setUsername(userName); //Username以及Password为Bmob中的User表,此表字段已经存在,故不可在javaBean中进行创建
stu.setPassword(password);
stu.setAge(21);
stu.setEmail("linfanrong235@163.com"); //测试使用,邮箱验证的功能
stu.setAddress("滨州");
/*
*用户注册的提交
*/
stu.signUp(MainActivity.this,new SaveListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this,"注册成功",Toast.LENGTH_SHORT).show();
} @Override
public void onFailure(int i, String s) {
Toast.makeText(MainActivity.this,"注册失败"+s,Toast.LENGTH_SHORT).show();
}
});
}

后台数据库:

Ⅱ用户登录:

private void showSubmit() {
//用户登录的方法
String userName=edt_user.getText().toString();
String password=edt_password.getText().toString();
final BmobUser user=new BmobUser();//创建对象,这个为Bmob创建的类
//与数据库中的信息进行比对,成功返回成功,失败返回失败的信息
user.setUsername(userName);
user.setPassword(password);
/*
*用户登录
*/
user.login(MainActivity.this,new SaveListener() {
@Override
public void onSuccess() {
if(user.getEmailVerified())
{
Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
}else{
//邮箱未验证
}
} @Override
public void onFailure(int i, String s) {
Toast.makeText(MainActivity.this,"登录失败"+s,Toast.LENGTH_SHORT).show();
}
});
}
}

Ⅲ更新用户数据

private void showUpdate() {
//用户更新的方法
Students stu=BmobUser.getCurrentUser(MainActivity.this,Students.class);
stu.setAddress("临沂");
stu.setAge(25);
stu.update(MainActivity.this,"5c8095e99b",new UpdateListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this,"更新成功",Toast.LENGTH_SHORT).show();
} @Override
public void onFailure(int i, String s) {
Toast.makeText(MainActivity.this,"更新失败"+s,Toast.LENGTH_SHORT).show();
}
});
}

Ⅳ修改密码

private void showRepassword() {
//修改密码的方法
final String email="876948462@qq.com";
BmobUser.resetPassword(MainActivity.this,email,new ResetPasswordListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this,"修改密码,请到"+email,Toast.LENGTH_SHORT).show();
} @Override
public void onFailure(int i, String s) {
Toast.makeText(MainActivity.this,"重置密码失败",Toast.LENGTH_SHORT).show();
}
});
}

ps:此时系统会默认向你输入的邮箱发送修改密码的邮件
-----------------------------------------------------------------------------------------------------------------------------------

【图片操作】

Ⅴ上传图片

private void submit() {
//上传图片
String path="sdcard/Download/shareone.jpg";
final BmobFile file=new BmobFile(new File(path)); //创建BmobFile对象,转换为Bmob对象
file.upload(MainActivity.this,new UploadFileListener() {
@Override
public void onSuccess() {
share share=new share();
share.setName("ShareOne");
share.setAge(20);
share.setIcon(file); //设置图片
share.save(MainActivity.this,new SaveListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this,"上传成功",Toast.LENGTH_LONG).show();
} @Override
public void onFailure(int i, String s) {
Toast.makeText(MainActivity.this,"上传失败"+s,Toast.LENGTH_LONG).show(); }
});
}

javaBean类:

public class share extends BmobObject {
private String name;
private int age;
private BmobFile icon; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public BmobFile getIcon() {
return icon;
} public void setIcon(BmobFile icon) {
this.icon = icon;
}
}

后台显示:

Ⅵ下载图片

private void download() {
//下载图片
BmobQuery<share> query=new BmobQuery<share>();
query.getObject(MainActivity.this,"f4514dcb9d",new GetListener<share>() {
@Override
public void onSuccess(share share) {
BmobFile icon=share.getIcon();
icon.loadImage(MainActivity.this,image);
} @Override
public void onFailure(int i, String s) { }
});
}

Ⅶ加载图片缩略图

private void load() {
//加载缩略图
BmobQuery<share> query_load=new BmobQuery<share>();
query_load.getObject(MainActivity.this,"f4514dcb9d",new GetListener<share>() {
@Override
public void onSuccess(share share) {
BmobFile icon=share.getIcon();
icon.loadImageThumbnail(MainActivity.this,load_show,100,100);
} @Override
public void onFailure(int i, String s) { }
});
}

-------------------------------------------------------------------------------------------------------

【数据操作】

JavaBean类:

public class FootBaller extends BmobObject {
private String name;
private int age;
private int score; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public int getScore() {
return score;
} public void setScore(int score) {
this.score = score;
}
}

Ⅷ增加数据

private void showCreate() {
FootBaller fb=new FootBaller();
fb.setName("monster");
fb.setAge(20);
fb.setScore(100);
fb.save(MainActivity.this,new SaveListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this,"创建成功",Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int i, String s) {
Toast.makeText(MainActivity.this,"创建失败"+s,Toast.LENGTH_SHORT).show();
}
});
}

Ⅸ更新数据

private void update() {
FootBaller fb=new FootBaller();
fb.setName("MonsterLin");
fb.setScore(80);
fb.setAge(26);
fb.update(MainActivity.this, "ed8f8bdd14", new UpdateListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "更新成功", Toast.LENGTH_SHORT).show();
} @Override
public void onFailure(int i, String s) {
Toast.makeText(MainActivity.this, "创建失败" + s, Toast.LENGTH_SHORT).show();
}
});
}

Ⅹ删除数据

private void delete() {
FootBaller fb=new FootBaller();
fb.setObjectId("7a01c65384"); //删除对应的ObjectId
fb.delete(MainActivity.this,new DeleteListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
} @Override
public void onFailure(int i, String s) {
Toast.makeText(MainActivity.this, "删除失败", Toast.LENGTH_SHORT).show();
}
});
}

Ⅺ查询数据

private void query() {
BmobQuery<FootBaller> query=new BmobQuery<FootBaller>();
query.addWhereEqualTo("name","monster");
query.findObjects(MainActivity.this,new FindListener<FootBaller>() {
@Override
public void onSuccess(List<FootBaller> footBallers) {
for (FootBaller fb:footBallers)
{
Toast.makeText(MainActivity.this, "查询数据成功"+fb.getName()+"---"+fb.getScore(), Toast.LENGTH_SHORT).show();
}
} @Override
public void onError(int i, String s) {
Toast.makeText(MainActivity.this, "查询失败"+s, Toast.LENGTH_SHORT).show();
}
});
}

【邮箱验证】

邮箱验证参考【用户注册】板块,邮箱验证需要在你对应的Bmob下开启邮箱验证的服务

【图片和数据上传】

上传的时候应该先上传图片,然后再此基础上上传数据信息

eg:

final BmobFile file=new BmobFile(new File(mCurrentPhotoStr));//将图片路径转为BmobFile

			final WalkerUser walkerUser=new WalkerUser();

			file.uploadblock(this, new UploadFileListener() {

				@Override
public void onSuccess() {
//上传成功
//Log.e("TAG", "上传文件成功"); walkerUser.setUsername(userName);
walkerUser.setPassword(pass);
walkerUser.setEmail(email); walkerUser.setMotto(motto);
walkerUser.setCity(city); walkerUser.setUserHeight(height);
walkerUser.setUserWeight(weight);
walkerUser.setStepLength(stepLength);
walkerUser.setUserFeatherSport(userFeatherSport);
walkerUser.setUserPhoto(file);
walkerUser.signUp(Regist.this, new SaveListener() { @Override
public void onSuccess() {
//数据上传成功
//Log.e("--->", "数据上传成功");
Toast.makeText(Regist.this, "欢迎加入Walker的大家庭",Toast.LENGTH_SHORT).show();
} @Override
public void onFailure(int i, String s) {
//数据上传失败
//Log.e("--->", "数据上传失败"+s);
Toast.makeText(Regist.this, "注册失败",Toast.LENGTH_SHORT).show();
}
});
} @Override
public void onFailure(int i, String error) {
Log.e("****--->>>","文件上传失败"+error);
}
});

------------------------------------------------------------------------------------------------------

【小编有话说】

1.Bmob的初始化建议:

public class BaseActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState); // 初始化BmobSDK
Bmob.initialize(this, "Application ID");

然后书写的类继承BaseActivity

2.注意BmobUser与BmobObject的使用:BmobUser的使用的时候,由于这张表作为系统表,所以已经存在的字段不允许自己重复定义,否则会出现编译不通过;BmobObject的表用户可以自定任意定义字段

3.在使用Bmob的使用需要加载SDK以及配置清单文件,具体操作:http://docs.bmob.cn/android/faststart/index.html?menukey=fast_start&key=start_android#index_%E5%AE%89%E8%A3%85BmobSDK

4.后续持续跟新…..

Bmob开发指南【android端】的更多相关文章

  1. 移动应用安全开发指南(Android)--Android组件和IPC

    概述 移动应用开发中,往往有跨进程通信的需求,方便地实现程序间的数据共享.Android提供了多种IPC通信的方式,给开发人员带来了便利,但如果选择或使用不当,就有可能发生各种各样的风险. 安全准则 ...

  2. 移动应用安全开发指南(Android)--数据验证

    概述 移动应用往往通过数据的发送.接收和处理来完成一系列功能,通常情况下,处理的数据绝大部分都来源于外部(比如网络.内部或外部存储和用户输入等),对这些数据处理不当会导致各种各样的漏洞和风险,比代码执 ...

  3. JMessage Android 端开发详解

    目前越来越多的应用会需要集成即时通讯功能,这里就为大家详细讲一下如何通过集成 JMessage 来为你的 App 增加即时通讯功能. 首先,一个最基础的 IM 应用会需要有哪些功能? 用户注册 / 登 ...

  4. Android SDK 开发指南

    Android SDK 开发指南 视频详解 以下视频是对融云 Android SDK 开发使用的详细讲解,您可以在阅读文档时配合学习.   更多视频教程如下: CSDN 融云 Android SDK ...

  5. 移动应用安全开发指南(Android)--完结篇(http://www.bubuko.com/infodetail-577312.html)

    1.认证和授权 概述 认证是用来证明用户身份合法性的过程,授权是用来证明用户可以合法地做哪些事的过程,这两个过程一般是在服务器端执行的,但也有的APP出于性能提升或用户体验等原因,将其做在客户端完成, ...

  6. opencv 手写选择题阅卷 (四)Android端 手机应用开发

    opencv 手写选择题阅卷 (四)Android 手机应用开发 在PC端把代码调通以后开始开发Android 手机应用,因为主要功能代码为C++代码,所以需要通过NDK编译,JAVA通过JNI方式调 ...

  7. 腾讯云安全:开发者必看|Android 8.0 新特性及开发指南

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 背景介绍 谷歌2017 I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 A ...

  8. Android开发指南--0 总览

    无意间发现一个网站,主打IOS方面的教程,然而作为一个Android开发者,我就找了下网站里有没有Android的教程,还真有,这里就翻译一下. 翻译目标教程:https://www.raywende ...

  9. Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序

    NDK开发Android端RTMP直播推流程序 经过一番折腾,成功把RTMP直播推流代码,通过NDK交叉编译的方式,移植到了Android下,从而实现了Android端采集摄像头和麦克缝数据,然后进行 ...

随机推荐

  1. 华为acl(traffic-filter)和dhcp管理

    华为alc配置实例:-traffic-filter # 在VLAN100上配置基于ACL的报文过滤,允许源IP地址为192.168.0.2/32的报文通过,丢弃其他报文. <HUAWEI> ...

  2. 学习C++.Primer.Plus 6 分支语句和逻辑操作符

    ||. &&操作符是一个顺序点 < 操作符从左向右结合 ; < age < )//17<age为true, = 1,肯定 < 27.所以为整个条件为tru ...

  3. 通过源码分析MyBatis的缓存

    前方高能! 本文内容有点多,通过实际测试例子+源码分析的方式解剖MyBatis缓存的概念,对这方面有兴趣的小伙伴请继续看下去~ MyBatis缓存介绍 首先看一段wiki上关于MyBatis缓存的介绍 ...

  4. C# 值类型和引用类型

    一.基本概念 C#只有两种数据类型:值类型和引用类型 值类型在线程栈分配空间,引用类型在托管堆分配空间 值类型转为引用类型称成为装箱,引用类型转为值类型称为拆箱 以下是值类型和引用类型对照表 从上图可 ...

  5. .NET基于Redis缓存实现单点登录SSO的解决方案

    一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单点登录,现在就NET基于Redis缓存实现单点登录做一个简单的分享. 单点登录(Single Sign On),简称 ...

  6. 【NDK开发】android-ndk r10环境搭建

    1)打开Android开发者的官网http://developer.android.com/找到Develop点击.如果页面打不开,通过代理来访问. 2)进入后再点击Tools 3)进入后在左侧找到N ...

  7. O2O营销模式(Online To Offline)

    什么是O2O营销模式 O2O营销模式又称离线商务模式,是指线上营销线上购买带动线下经营和线下消费.O2O通过打折.提供信息.服务预订等方式,把线下商店的消息推送给互联网用户,从而将他们转换为自己的线下 ...

  8. jvm中的动态分派

    动态分派与复写密不可分,因为java中存在向上转型,这样就涉及到方法的调用问题.先看一下示例代码 package com.dy.xidian; class Test1 { public void sa ...

  9. spring配置属性的两种方式

    spring配置属性有两种方式,第一种方式通过context命名空间中的property-placeholder标签 <context:property-placeholder location ...

  10. Android快速开发框架LoonAndroid (转)

    1.源码简介: 主要有以下模块: (1) 自动注入框架(只需要继承框架内的application既可) (2) 图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性) (3) 网络请求模块(继承 ...