最近在使用后端云Bmob对数据进行存储,目的是在不搭建服务器的前提下,能对Android应用的数据进行操作处理。

一、创建账号
需要的自己去注册,后端云Bmob首页地址:https://www.bmob.cn/

二、网站后台创建应用(如图)
这里使用的是免费版的

创建成功之后点击创建的应用进去,在设置->应用秘钥中可以找到应用秘钥

三、AndroidStudio SDK导入信息配置
详细参考:http://doc.bmob.cn/data/android/index.html

1、在 Project 的 build.gradle 文件中添加 Bmob的maven仓库地址

buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:2.3.3'}
}allprojects {repositories {jcenter()//Bmob的maven仓库地址--必填maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }}
}task clean(type: Delete) {delete rootProject.buildDir
}

2、在app的build.gradle文件中添加compile依赖文件

 apply plugin: 'com.android.application'android {compileSdkVersion 22buildToolsVersion '22.0.1'**兼容Android6.0系统所需,如果这句话报错,可在dependencies标签下使用compile 'cn.bmob.android:http-legacy:1.0'**useLibrary 'org.apache.http.legacy'...}dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])//以下SDK开发者请根据需要自行选择//bmob-sdk:Bmob的android sdk包,包含了Bmob的数据存储、文件等服务,以下是最新的bmob-sdk://3.5.5:请务必查看下面注释[1]compile 'cn.bmob.android:bmob-sdk:3.6.3'//bmob-push:Bmob的推送包compile 'cn.bmob.android:bmob-push:0.8'//bmob-im:Bmob的即时通讯包,注意每个版本的im依赖特定版本的bmob-sdk,具体的依赖关系可查看下面注释[2]compile 'cn.bmob.android:bmob-im:2.1.0@aar'//如果你想应用能够兼容Android6.0,请添加此依赖(org.apache.http.legacy.jar)compile 'cn.bmob.android:http-legacy:1.0'}

3、在你的应用程序的AndroidManifest.xml文件中添加相应的权限:

<!--允许联网 -->
<uses-permission android:name="android.permission.INTERNET" />
<!--获取GSM(2g)、WCDMA(联通3g)等网络状态的信息  -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--获取wifi网络状态的信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--保持CPU 运转,屏幕和键盘灯有可能是关闭的,用于文件上传和下载 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--获取sd卡写的权限,用于文件上传和下载-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许读取手机状态 用于创建BmobInstallation-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

四、应用中使用详情
这里演示部分的API
1、启动页

初始化BmobSDK:

//第一:默认初始化Bmob.initialize(this, "Your Application ID");

2、由登录界面进入注册页面,进行账户注册

输入账号密码后点击注册按钮:

      final String registerName = accountRegisterName.getText().toString().trim();//账号final String registerPassword = accountRegisterPassword.getText().toString().trim();//密码if (TextUtils.isEmpty(registerName) || TextUtils.isEmpty(registerPassword)) {showToast("注册账号或密码为空");return;}BmobUser bmobUser = new BmobUser();bmobUser.setUsername(registerName);bmobUser.setPassword(registerPassword);bmobUser.signUp(new SaveListener<BmobUser>() {@Overridepublic void done(BmobUser bmobUser, BmobException e) {if (e == null) {showToast("恭喜,注册账号成功");finish();} else {showToast("register fail:" + e.getMessage());}}});

注册成功后在后端云Bmob后台有信心记录:

3、注册成功后回到登录界面

输入账号密码后点击登录按钮:

   final String accountName = accountLoginName.getText().toString().trim();//账号final String accountPassword = accountLoginPassword.getText().toString().trim();//密码if (TextUtils.isEmpty(accountName)) {showToast("账号不能为空");return;}if (TextUtils.isEmpty(accountPassword)) {showToast("密码不能为空");return;}//登录过程showProgressBar();new Handler().postDelayed(new Runnable() {@Overridepublic void run() {//BmobUser类为Bmob后端云提供类BmobUser bmobUser = new BmobUser();bmobUser.setUsername(accountName);bmobUser.setPassword(accountPassword);bmobUser.login(new SaveListener<BmobUser>() {@Overridepublic void done(BmobUser bmobUser, BmobException e) {if (e == null) {//登录成功后进入主界面Intent intent = new Intent(LoginActivity.this, LostAndFoundActivity.class);startActivity(intent);finish();} else {showToast(""+e.getMessage());hiddenProgressBar();//隐藏}}});}}, 3000);

4、登录成功后进入主界面,右上方按钮进入失物招领的信息发布界面

4-1、信息完成后,点击右上角点击发布按钮,此时需要添加数据:
先创建bean类,继承BmobObject类

public class LostInfomationReq extends BmobObject{private String title;  //标题private String phoneNum;//手机号码private String desc;//描述public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getPhoneNum() {return phoneNum;}public void setPhoneNum(String phoneNum) {this.phoneNum = phoneNum;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}
}

4-2、发布信息:

      LostInfomationReq lostInfomationReq = new LostInfomationReq();lostInfomationReq.setTitle(titleName);//titleName为用户输入的标题lostInfomationReq.setPhoneNum(num);//num为用户输入的号码lostInfomationReq.setDesc(descridle);//descridle为信息描述lostInfomationReq.save(new SaveListener<String>() {@Overridepublic void done(String s, BmobException e) {if (e == null) {showToast("招领信息发布成功");//成功后提示主界面刷新数据Intent intent = new Intent();setResult(RESULT_OK, intent);//成功后将页面销毁finish();} else {showToast("信息发布失败");}}});

4-3、添加数据成功后,在后台会有插入的数据:

5、主界面的信息需要读取后台用户插入的数据

数据的查询:

 BmobQuery<LostInfomationReq> lostInfomationReqBmobQuery = new BmobQuery<>();lostInfomationReqBmobQuery.order("-updatedAt");//排序lostInfomationReqBmobQuery.findObjects(new FindListener<LostInfomationReq>() {@Overridepublic void done(List<LostInfomationReq> list, BmobException e) {if (e == null) {lostInfomationReqList = list;lostAndFoundAdapter.setData(list);recyclerView.setAdapter(lostAndFoundAdapter);} else {showToast("查询数据失败");}}});

6、长按RecyclerView每条Item进行编辑与删除操作

6-1、删除操作即是将后台中的将选中的信息删除

    LostInfomationReq lostInfomationReq = new LostInfomationReq();lostInfomationReq.setObjectId(lostInfomationReqList.get(position).getObjectId());lostInfomationReq.delete(new UpdateListener() {@Overridepublic void done(BmobException e) {if (e == null) {lostInfomationReqList.remove(position);lostAndFoundAdapter.setData(lostInfomationReqList);lostAndFoundAdapter.notifyDataSetChanged();} else {showToast("删除数据失败");}}});

6-2、编辑操作即对数据进行修改

    LostInfomationReq lostInfomationReq = new LostInfomationReq();lostInfomationReq.setTitle(titleName);//titleName为用户输入的标题lostInfomationReq.setPhoneNum(num);//num为用户输入的号码lostInfomationReq.setDesc(descridle);//descridle为信息描述lostInfomationReq.update(infomationReq.getObjectId(), new UpdateListener() {@Overridepublic void done(BmobException e) {if (e == null) {showToast("更新信息成功");//更新数据后提示主界面进行数据刷新Intent intent = new Intent();setResult(RESULT_OK, intent);finish();}}});

7、使用PopupWindow长按弹出框

         //加载布局文件View contentview = LayoutInflater.from(mContext).inflate(R.layout.pop_window_view,null);final PopupWindow popupWindow = new PopupWindow(contentview, LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);//设置焦点popupWindow.setFocusable(true);//触摸框外popupWindow.setOutsideTouchable(true);//点击空白处的时候让PopupWindow消失popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000));//设置偏移量popupWindow.showAsDropDown(holder.time, 300, -100);//showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移// showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移//showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移//点击编辑按钮contentview.findViewById(R.id.edit_btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//回调给主界面,进行数据操作mItemClickListener.onEditOrDeleteClick(pos, EDIT_CODE);//销毁弹出框popupWindow.dismiss();}});//点击删除按钮contentview.findViewById(R.id.delete_btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//回调给主界面,进行数据操作mItemClickListener.onEditOrDeleteClick(pos, DELETE_CODE);//销毁弹出框popupWindow.dismiss();}});

8、总结
8-1、实现登录、注册的过程:
使用Bmob提供专门的用户类——BmobUser来自动处理用户账户管理所需的功能。有了这个类,你就可以在你的应用程序中添加用户账户功能。BmobUser是BmobObject的一个子类,它继承了BmobObject所有的方法,具有BmobObject相同的功能。不同的是,BmobUser增加了一些特定的关于用户账户管理相关的功能。

8-2、失物招领:
这个过程中,我们对数据进行了添加、查询、删除以及更新操作,当然后端云Bmob还不止提供了这些API,还有很多API还需要掌握。

8-3、需要Demo源码的童鞋,可以在底部公众号回复:"BmobDemo"即可获取。


小编整理了一份Android电子书籍,需要的童鞋关注底部公众号(longxuanzhigu)回复:“e_books” 即可获取哦!

以下是个人公众号(longxuanzhigu),之后发布的文章会同步到该公众号,方便交流学习Android知识及分享个人爱好文章:

Android使用后端云Bmob实现登录、注册及失物招领相关推荐

  1. 【Android】使用后端云Bmob实现登录、注册

    Android使用后端云Bmob实现登录.注册 文章目录 Android使用后端云Bmob实现登录.注册 注册Bmob账号,获取Application ID 导入依赖 在AndroidManifest ...

  2. android开发之后端云bmob的使用

    android开发之后端云bmob的使用 由于开发的应用需要搭建服务器和数据库,所以了解了一下网上的后端云服务,初步了解之后选择了国内的bmob,下面就来简单介绍一下它的使用: 1.注册Bmob帐号 ...

  3. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下! 建立一个类 并继承SQLiteOpenHelper public ...

  4. 谷粒学院 Day12.登录页面模式、整合JWT、整合QQ邮箱、用户登录注册接口【后端】、用户登录注册【前端】

    项目结构: 配置文件 application.properties配置类 spring.jackson.time-zone=GMT+8# nacos注册中心 spring.cloud.nacos.di ...

  5. Android Studio开发:简单的登录注册界面

    Android开发:编写简单的登录界面与注册界面 1.登录界面布局 1.1主布局的布局方式是垂直布局,第一个TextView控件在顶部居中布置,显示"用户登录 "字样 <Te ...

  6. Android+Blockly大作业(含登录注册系统、碎片式浏览、Blockly设计)

    此次大作业实现功能包括: 1.数据库的搭建 2.登录注册界面及主界面界面的设计 3.碎片的应用 4.webBlockly的嵌套 我曾在不同活动调用数据库的bug.数据库的检索和碎片的实现上花了很多时间 ...

  7. Android仿老版本陌陌登录注册介绍页实现

    楼主手机上装了好多个软件,陌陌不常玩的,看了下它的登录注册下面是一些美女的图片,而且有透明度的变化,关键是图片没有压缩和失真的情况,然后分析了下,这些肯定不是一张背景图了,可想而知,著名的9宫格啊,这 ...

  8. 微信小程序 云开发 欢迎登录注册

    提示:此文章相关代码在新版小程序上或许已经不可用!该小程序片段需要使用云函数,云函数具体内容参考github.需要使用云开发提供的数据库,相关的具体使用方法还请参考小程序云开发的相关最新文档.该部分代 ...

  9. 微信小程序云开发 之 登录注册界面 详细教程

    文章目录 前言 一.前期的准备(很重要) 1.程序的需求 2.微信开发者文档 3.数据库的设计 二.小程序设计阶段 1.选择开发方式 2.云开发 第一步:注册微信小程序,获取小程序的 AppID 第二 ...

  10. android项目实战 博学谷 代码,《Android项目实战-博学谷》登录注册

    标题栏 思路 由于项目中大部分界面都有一个后退键和一个标题栏,为避免代码冗杂以及便于利用,我们可以将后推荐和标题栏单独抽取出来定义一个标题栏布局,在 res/layout 目录下新建一个 Layout ...

最新文章

  1. 使用 EthPM 包管理工具
  2. 京东数科首次公开:强一致、高性能分布式事务中间件JDTX
  3. 荣事达空调质量差3天即坏
  4. systemctl添加开机启动
  5. 配置Tomcat连接池
  6. python处理滑块验证码_使用python实现滑动验证码
  7. QML工作笔记-Key Element的使用
  8. 12-1。。。面试的一些体会吧
  9. 前端异步编程之Promise和async的用法
  10. 如何用firebug调试js
  11. 字符串正反连接java_字符串正反连接(Java实现,超简单)
  12. CentOS7上squid的部署及两种模式(4.1版本)
  13. tftp negotiation
  14. 为什么随机存取存储器叫做随机
  15. MPI大漩涡(单纯的floyd)
  16. php源码加密 zend_zend_guard对PHP代码进行加密教程
  17. 自动化测试工程师_所以你想成为一名测试自动化工程师
  18. [总结]Android系统体系结构
  19. Android - 制作聊天气泡.9格式
  20. [原创]使用FleaPHP框架构建简单留言本应用

热门文章

  1. 【正则表达式】正则表达式在线工具怎么使用?怎么测试自己写的正则表达式是否正确?
  2. 1008day1作业:字符串(方法、格式化、strip左右字符)、列表(方法、max、min、去重、统计个数、两列表比较取出大值zip合成新列表)、斐波那契、水仙花数、冒泡排序列表、计算器、九九乘法
  3. 中国金茂上线电子签名,加速地产业务数字化
  4. vue ajax请求结束再次执行查询方法,Vue.js 监控v-for循环渲染完成后再执行方法
  5. Excel学习笔记:P27-我的表格有重复内容该怎么办?简单三招让它们现出原形
  6. 疯狂脑机接口计划:马斯克的 “读心术”
  7. 4237. 【五校联考5day1】Melancholy (Standard IO)
  8. ie 远程控制计算机,通过IE浏览器连接“远程桌面”方法详解
  9. 在网吧想免费上网又何不自己动动手呢?
  10. 自学Java第二天 解决java不能输出中文问题