内容简介:最近在使用后端云Bmob对数据进行存储,目的是在不搭建服务器的前提下,能对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 22 buildToolsVersion '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>() { @Override public 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() { @Override public void run() { //BmobUser类为Bmob后端云提供类 BmobUser bmobUser = new BmobUser(); bmobUser.setUsername(accountName); bmobUser.setPassword(accountPassword); bmobUser.login(new SaveListener<BmobUser>() { @Override public 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>() { @Override public 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>() { @Override public 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() { @Override public 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() { @Override public 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() { @Override public void onClick(View v) { //回调给主界面,进行数据操作 mItemClickListener.onEditOrDeleteClick(pos, EDIT_CODE); //销毁弹出框 popupWindow.dismiss(); } }); //点击删除按钮 contentview.findViewById(R.id.delete_btn).setOnClickListener(new View.OnClickListener() { @Override public 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"即可获取。
以下是个人公众号(longxuanzhigu),之后发布的文章会同步到该公众号,方便交流学习Android知识及分享个人爱好文章:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。