欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android如何使用Bmob后端云实现失物招领功能

程序员文章站 2022-06-25 09:28:22
最近在使用后端云bmob对数据进行存储,目的是在不搭建服务器的前提下,能对android应用的数据进行操作处理,其实这篇是比较久之前写的了,有些童鞋反馈说现在的源码会有问题,所以我又重新运行了一下,随...

最近在使用后端云bmob对数据进行存储,目的是在不搭建服务器的前提下,能对android应用的数据进行操作处理,其实这篇是比较久之前写的了,有些童鞋反馈说现在的源码会有问题,所以我又重新运行了一下,随着bmob版本的更新,之前的源码跑不起来,现在重新更新了最新版本做了个demo.

实现步骤:

一、创建账号

需要的自己去注册,后端云bmob首页地址:

二、网站后台创建应用(如图)

这里使用的是免费版的

Android如何使用Bmob后端云实现失物招领功能

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

Android如何使用Bmob后端云实现失物招领功能

三、androidstudio sdk导入信息配置

详细参考:

1、在 project 的 build.gradle 文件中添加 bmob的maven仓库地址:

buildscript {

  repositories {
    google()
        jcenter()   
  }
  dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'
  }
}

allprojects {
  repositories {
    google()
    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依赖文件:

android {
    compilesdkversion 30
  buildtoolsversion "30.0.3"

  **兼容android6.0系统所需,如果这句话报错,可在dependencies标签下使用compile 'cn.bmob.android:http-legacy:1.0'**
  uselibrary 'org.apache.http.legacy'

  ...
}
dependencies {
  //以下sdk开发者请根据需要自行选择
  //bmob-sdk:bmob的android sdk包,包含了bmob的数据存储、文件等服务,以下是最新的bmob-sdk:
  //3.5.5:请务必查看下面注释[1]
  implementation 'cn.bmob.android:bmob-sdk:3.5.5'

  //bmob-push:bmob的推送包
  implementation 'cn.bmob.android:bmob-push:0.8'

  //bmob-im:bmob的即时通讯包,注意每个版本的im依赖特定版本的bmob-sdk,具体的依赖关系可查看下面注释[2]
  implementation 'cn.bmob.android:bmob-im:2.0.5@aar'
  implementation 'cn.bmob.android:bmob-sdk:3.4.7-aar'

  //bmob-sms :bmob单独为短信服务提供的包
  implementation 'cn.bmob.android:bmob-sms:1.0.1'

  //如果你想应用能够兼容android6.0,请添加此依赖(org.apache.http.legacy.jar)
  implementation '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、启动页:

Android如何使用Bmob后端云实现失物招领功能

初始化bmobsdk:

//第一:默认初始化
bmob.initialize(this,"your application id");

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

Android如何使用Bmob后端云实现失物招领功能

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

  private void bmobregisteraccount() {
    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后台有信心记录:

Android如何使用Bmob后端云实现失物招领功能

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

Android如何使用Bmob后端云实现失物招领功能

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

  private void bmobuseraccountlogin() {
    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、登录成功后进入主界面,右上方按钮进入失物招领的信息发布界面

Android如何使用Bmob后端云实现失物招领功能

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、发布信息:

  /**
   * @param titlename 标题
   * @param num    电话号码
   * @param descridle 描述
   */
  private void publishlostinfo(string titlename, string num, string descridle) {
    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、添加数据成功后,在后台会有插入的数据:

Android如何使用Bmob后端云实现失物招领功能

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

Android如何使用Bmob后端云实现失物招领功能

数据的查询:

  private void initdata() {
    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进行编辑与删除操作:

Android如何使用Bmob后端云实现失物招领功能

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

  private void deleteitemdata(final int position) {
    if (lostinfomationreqlist.size() != 0) {
      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、编辑操作即对数据进行修改

  /**
   * @param titlename 标题
   * @param num    电话号码
   * @param descridle 描述
   */
  private void updatainfo(string titlename, string num, string descridle) {
    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长按弹出框

  private void showwindow(lostandfoundholder holder, final int pos) {
    //加载布局文件
    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还需要掌握。

bmobdemo源码:
链接:https://pan.baidu.com/s/1wtcwweitqt65mdtr3psvhq
提取码:emue

以上就是android如何使用bmob后端云实现失物招领功能的详细内容,更多关于android 实现失物招领功能的资料请关注其它相关文章!