作为一个开发者,数据的存储,用户的登陆,验证等操作,对程序来说是必不可少的,下面我们将从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. JavaScript的闭包和内存泄漏问题

    闭包 http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html JavaScript中必须提到的功能最强大的抽象 ...

  2. 李学斌:论复杂系统中的应用间协作V3

    说明 本文主要讨论了巨型复杂业务系统的一种构建思路,力图实现决策意志的快速.准确.一致的下传并简化实施成本提供实施效率.通过全业务领域的即时流程编排,实现全网业务IT系统的快速建设与迭代.本文所讲的方 ...

  3. Asp.net,C# 纯数字加密解密字符串

    也就是说加密后的数据不再是:N8lAaHMFtSAQgaf3+RUFng== 希望encryptedString是"1203877893704809384098328409234923840 ...

  4. 命令行下 mysql 不是内部或外部命令排查方法

    首先确定你没有更改过MySQL的安装目录.如果你进行过改名或者更改了你的路径,那么要在相应的配置文件中更改你的你路径.找到C:\Windows\my.ini文件,更改你配置的文件路径,改成你修改后的路 ...

  5. 【分布式协调器】Paxos的工程实现-Cocklebur状态转移

    集群中的主机经过选举过程由Looking状态变为了Leadering或Following状态.而这些状态之间转移的条件是什么呢?先来个直观的,上状态图. 图 4.1 Cocklebur选举过程中的状态 ...

  6. 【基础】利用thrift实现一个非阻塞带有回调机制的客户端

    假设读者对thrift有一定了解. 客户端有时需要非阻塞的去发送请求,给定服务端一个请求,要求其返回一个计算结果.但是客户端不想等待服务端处理完,而是想发送完这个指令后自己去做其他事情,当结果返回时自 ...

  7. 3到6年的.NETer应该掌握哪些知识?

    我们组的开发人力一直比较紧张,今年春节后,高层终于给了几个headcount,我们可以开始招人了.从三月初我们就开始找简历,渠道有拉钩,内推,我司自己的招聘网站和智联等.简历筛了很多,也打了很多电话, ...

  8. .Net下一个类型转换神器

    引言 类型转换经常遇到,最常用的应该是string类型转换为其它基元类型,常见于http参数类型转换.Convert静态类的Convert.ChangeType()方法可以把实现IConvertibl ...

  9. (十七)迭代器模式详解(foreach的精髓)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 各位好,很久没以LZ的身份和 ...

  10. [BZOJ 1997][HNOI2010]Planar(2-SAT)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1997 分析: 考虑每条边是在圈子里面还是圈子外面 所以就变成了2-SAT判定问题了= ...