Android使用后端云Bmob实现登录、注册及失物招领
最近在使用后端云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实现登录、注册及失物招领相关推荐
- 【Android】使用后端云Bmob实现登录、注册
Android使用后端云Bmob实现登录.注册 文章目录 Android使用后端云Bmob实现登录.注册 注册Bmob账号,获取Application ID 导入依赖 在AndroidManifest ...
- android开发之后端云bmob的使用
android开发之后端云bmob的使用 由于开发的应用需要搭建服务器和数据库,所以了解了一下网上的后端云服务,初步了解之后选择了国内的bmob,下面就来简单介绍一下它的使用: 1.注册Bmob帐号 ...
- android安卓Sqlite数据库实现用户登录注册
看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下! 建立一个类 并继承SQLiteOpenHelper public ...
- 谷粒学院 Day12.登录页面模式、整合JWT、整合QQ邮箱、用户登录注册接口【后端】、用户登录注册【前端】
项目结构: 配置文件 application.properties配置类 spring.jackson.time-zone=GMT+8# nacos注册中心 spring.cloud.nacos.di ...
- Android Studio开发:简单的登录注册界面
Android开发:编写简单的登录界面与注册界面 1.登录界面布局 1.1主布局的布局方式是垂直布局,第一个TextView控件在顶部居中布置,显示"用户登录 "字样 <Te ...
- Android+Blockly大作业(含登录注册系统、碎片式浏览、Blockly设计)
此次大作业实现功能包括: 1.数据库的搭建 2.登录注册界面及主界面界面的设计 3.碎片的应用 4.webBlockly的嵌套 我曾在不同活动调用数据库的bug.数据库的检索和碎片的实现上花了很多时间 ...
- Android仿老版本陌陌登录注册介绍页实现
楼主手机上装了好多个软件,陌陌不常玩的,看了下它的登录注册下面是一些美女的图片,而且有透明度的变化,关键是图片没有压缩和失真的情况,然后分析了下,这些肯定不是一张背景图了,可想而知,著名的9宫格啊,这 ...
- 微信小程序 云开发 欢迎登录注册
提示:此文章相关代码在新版小程序上或许已经不可用!该小程序片段需要使用云函数,云函数具体内容参考github.需要使用云开发提供的数据库,相关的具体使用方法还请参考小程序云开发的相关最新文档.该部分代 ...
- 微信小程序云开发 之 登录注册界面 详细教程
文章目录 前言 一.前期的准备(很重要) 1.程序的需求 2.微信开发者文档 3.数据库的设计 二.小程序设计阶段 1.选择开发方式 2.云开发 第一步:注册微信小程序,获取小程序的 AppID 第二 ...
- android项目实战 博学谷 代码,《Android项目实战-博学谷》登录注册
标题栏 思路 由于项目中大部分界面都有一个后退键和一个标题栏,为避免代码冗杂以及便于利用,我们可以将后推荐和标题栏单独抽取出来定义一个标题栏布局,在 res/layout 目录下新建一个 Layout ...
最新文章
- 使用 EthPM 包管理工具
- 京东数科首次公开:强一致、高性能分布式事务中间件JDTX
- 荣事达空调质量差3天即坏
- systemctl添加开机启动
- 配置Tomcat连接池
- python处理滑块验证码_使用python实现滑动验证码
- QML工作笔记-Key Element的使用
- 12-1。。。面试的一些体会吧
- 前端异步编程之Promise和async的用法
- 如何用firebug调试js
- 字符串正反连接java_字符串正反连接(Java实现,超简单)
- CentOS7上squid的部署及两种模式(4.1版本)
- tftp negotiation
- 为什么随机存取存储器叫做随机
- MPI大漩涡(单纯的floyd)
- php源码加密 zend_zend_guard对PHP代码进行加密教程
- 自动化测试工程师_所以你想成为一名测试自动化工程师
- [总结]Android系统体系结构
- Android - 制作聊天气泡.9格式
- [原创]使用FleaPHP框架构建简单留言本应用
热门文章
- 【正则表达式】正则表达式在线工具怎么使用?怎么测试自己写的正则表达式是否正确?
- 1008day1作业:字符串(方法、格式化、strip左右字符)、列表(方法、max、min、去重、统计个数、两列表比较取出大值zip合成新列表)、斐波那契、水仙花数、冒泡排序列表、计算器、九九乘法
- 中国金茂上线电子签名,加速地产业务数字化
- vue ajax请求结束再次执行查询方法,Vue.js 监控v-for循环渲染完成后再执行方法
- Excel学习笔记:P27-我的表格有重复内容该怎么办?简单三招让它们现出原形
- 疯狂脑机接口计划:马斯克的 “读心术”
- 4237. 【五校联考5day1】Melancholy (Standard IO)
- ie 远程控制计算机,通过IE浏览器连接“远程桌面”方法详解
- 在网吧想免费上网又何不自己动动手呢?
- 自学Java第二天 解决java不能输出中文问题