Android中的Bmob移动后端云服务器功能

源码下载:http://xiazai.jb51.net/201801/yuanma/BmobTest1.rar

PS:一般情况下,我们在写android程序的时候,想要实现登录注册功能,可以选择自己用servlet作为服务端来实现过滤没有注册过的用户,但是太麻烦,而且不是随时都可以用的。这里介绍一个移动后端云服务器平台bmob,这不仅可以实现云数据库储存,还可以获取手机验证等,随时随地都很轻松,下面写一个小demo,实现一个登陆注册功能,认识增删查改。下面我稍微写一个例子,简单实现注册登录功能。

1:首先到bmob官网,注册一个账号,里面创建一个项目,如图:

2:创建一个android项目,(AndroidStudio)

(1):添加依赖:在app下的build.gradle中添加

compile 'cn.bmob.android:bmob-sdk:3.4.6'
compile 'com.squareup.okhttp:okhttp:2.4.0'//CDN文件服务使用okhttp相关包进行文件的上传和下载(必填)
compile 'com.squareup.okio:okio:1.4.0'
sourceSets {
main.jniLibs.srcDirs = ['libs']
}
useLibrary 'org.apache.http.legacy'

位置如图:

(2)添加权限:

<!--允许联网-->
<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"/>

(3):添加maven,到指定的云库

maven { url "https://raw.github.com/bmob/bmob-android-sdk/master"}

(4:)初始化:

Bmob.initialize(this,"你的 应用ID");

3:下面就是代码了

写一个实体类person,

package cn.day1.model;
import cn.bmob.v3.BmobObject;
/**
 * Created by CMusketeer on 17/10/22.
 */
public class Person extends BmobObject {
 private String name;
 private String password;
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public String getPassword() {
 return password;
 }
 public void setPassword(String password) {
 this.password = password;
 }
}

写三个布局,分别是注册页面,登录页面,登录成功跳转的页面

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
android:orientation="vertical"
 tools:context="cn.day1.bmobtest1.MainActivity">
 <TextView
 android:gravity="center"
 android:textSize="20dp"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:text="登录" />
 <EditText
 android:id="@+id/id_username"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:hint="username"/>
 <EditText
 android:id="@+id/id_userpassword"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:hint="password" />
 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:orientation="horizontal">
 <Button
  android:id="@+id/id_ok"
  android:layout_width="0dp"
  android:text="登录"
  android:layout_height="wrap_content"
  android:layout_weight="1"/>
 <Button
  android:id="@+id/id_register"
  android:text="注册"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 </LinearLayout>
</LinearLayout>

注册页面:register_layout.xml,先把各页面都写了,后续就好办了。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context="cn.day1.bmobtest1.MainActivity">
 <TextView
 android:gravity="center"
 android:textSize="20dp"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:text="注册中心" />
 <EditText
 android:id="@+id/id_register_username"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:hint="username"/>
 <EditText
 android:id="@+id/id_register_userpassword"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:hint="password" />
 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:orientation="horizontal">
 <Button
  android:id="@+id/id_register_ok"
  android:text="注册"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 </LinearLayout>
</LinearLayout>

登录成功页面:success.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <TextView
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:text="成功登录"
 android:gravity="center"
 android:textSize="50dp"/>
</LinearLayout>

注册Activity,RegisterActivity.java  功能:增

这里是一个简单的注册,里面没有加判断,所以,一个号可以重复注册,但是只有唯一ID。

package cn.day1.bmobtest1;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import cn.bmob.v3.listener.SaveListener;
import cn.day1.model.Person;
/**
 * Created by CMusketeer on 17/10/22.
 */
public class RegisterActivity extends Activity {
 private TextView register_user;
 private TextView register_password;
 private Button register_ok;
 private Person p2;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.register_layout);
 addControl();//加载控件
 addRegisterShow();//注册方法
 }
 private void addRegisterShow() {
 register_ok.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  final String rUser=register_user.getText().toString().trim();
  String rPassword=register_password.getText().toString().trim();
  //判断用户名和密码是否为空,如果为空则不能进去。
  if(rUser.length()>0&&rPassword.length()>0){
   p2 = new Person();
   p2.setName(rUser);
   p2.setPassword(rPassword);
   //插入方法
   p2.save(RegisterActivity.this, new SaveListener() {
   @Override
   public void onSuccess() {
    // TODO Auto-generated method stub
    register_password.setText("");
    register_user.setText("");
    Toast.makeText(RegisterActivity.this, "添加数据成功,返回objectId为:" + p2.getObjectId(), Toast.LENGTH_SHORT).show();
   }
   @Override
   public void onFailure(int code, String msg) {
    // TODO Auto-generated method stub
    Toast.makeText(RegisterActivity.this, "创建数据失败:" + msg, Toast.LENGTH_SHORT).show();
   }
   });
  }else{
   Toast.makeText(RegisterActivity.this, "用户名或者密码不能为空", Toast.LENGTH_SHORT).show();
  }
  }
 });
 }
 private void addControl() {
 register_user = (TextView) findViewById(R.id.id_register_username);
 register_password = (TextView) findViewById(R.id.id_register_userpassword);
 register_ok = (Button) findViewById(R.id.id_register_ok);
 }
}

登录页面:MainActivity.java   功能:查

package cn.day1.bmobtest1;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.listener.FindListener;
import cn.day1.model.Person;
public class MainActivity extends AppCompatActivity {
 private Person p2;
 private TextView lgUser;
 private TextView lgPassword;
 private Button btn_ok;
 private Button btn_rg;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 Bmob.initialize(this, "你的 应用id");
 setContentView(R.layout.activity_main);
 addControl();
 addLogin();
 }
 private void addLogin() {
 btn_rg.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  Intent intent=new Intent(MainActivity.this,RegisterActivity.class);
  startActivity(intent);
  }
 });
 btn_ok.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  BmobQuery<Person> query=new BmobQuery<Person>();
  query.findObjects(MainActivity.this,new FindListener<Person>(){
   String lgU=lgUser.getText().toString().trim();
   String lgp=lgPassword.getText().toString().trim();
   int panduan=1;
   @Override
   public void onSuccess(List<Person> list) {
   for(int i=0;i<list.size();i++){
    String name=list.get(i).getName();
    String password=list.get(i).getPassword();
    Log.e("user","唯一 id:"+list.get(i).getObjectId()+"----"+name+"---"+password);
    if(name.equals(lgU) && password.equals(lgp)){
     Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
     panduan=2;
     //成功后panduan等于2,则跳出该循环,并且把输入快都清空,跳转到指定页面
     lgUser.setText("");
     lgPassword.setText("");
     Intent intent=new Intent(MainActivity.this,Success.class);
     startActivity(intent);
     break;
    }
   }
   if(panduan==1){
    Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
   }
   }
   @Override
   public void onError(int i, String s) {
   }
  });
  }
 });
 }
 private void addControl() {
 lgUser = (TextView) findViewById(R.id.id_username);
 lgPassword = (TextView) findViewById(R.id.id_userpassword);
 btn_ok = (Button) findViewById(R.id.id_ok);
 btn_rg = (Button) findViewById(R.id.id_register);
 }
}

登录成功页面 Success.java

package cn.day1.bmobtest1;
import android.app.Activity;
import android.os.Bundle;
/**
 * Created by CMusketeer on 17/10/22.
 */
public class Success extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.success);
 }
}

总结:

唯一id的获取可以通过用户名来获取,当用户输入用户名时,只要数据库中用户名和输入的一致,则就可以list.get(i).getObjectId()

处理增删查改

增:
person = new Person();
person.setName(user);
person.setAddress(password);
person.save(new SaveListener<String>() {
 @Override
 public void done(String s, BmobException e) {
 if(e == null){
  Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
 }
 else{
 }
 }
});
删
Id可以通过查处所有的,从而得到id
id=list.get(i).getObjectId();
 person = new Person();
person.delete(id, new UpdateListener() {
 @Override
 public void done(BmobException e) {
 if(e==null){
 Log.e("sss","删除成功"); }
 }
 });
查 :和上面的查不大一样,这也是一种方法
//查询所有,
query.findObjects(new FindListener<Person>() {
 @Override
 public void done(List<Person> list, BmobException e) {
}}
//查询单个
query.getObject(id,new listener)
改
person.setName(“111”);
person.update(id,new UpdateListener() {
    @Override
    public void done(BmobException e) {
     if(e==null){
//     Toast.makeText(MainActivity.this, "更改成功", Toast.LENGTH_SHORT).show();
     Log.e("sss","更改成功");
     }
    }

效果图:

总结

以上所述是小编给大家介绍的Android中的Bmob移动后端云服务器功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

您可能感兴趣的文章:

  • Android中用Bmob实现短信验证码功能的方法详解
  • Android使用第三方服务器Bmob实现发送短信验证码
  • Android实现上传文件到服务器实例详解
  • Android选择图片或拍照图片上传到服务器
  • Android实现蓝牙客户端与服务器端通信示例
  • Android实现调用系统图库与相机设置头像并保存在本地及服务器
  • android选择视频文件上传到后台服务器
  • Android中实现OkHttp上传文件到服务器并带进度
(0)

相关推荐

  • Android中用Bmob实现短信验证码功能的方法详解

    这篇文章主要介绍发送验证码和校验验证码的功能,用到一个第三方平台Bmob,那Bmob是什么呢?Bmob可以开发一个云存储的移动应用软件,他提供了大量的标准的API接口,根据需要接入相关服务,开发者可以更加专注于应用的开发,让产品交付更快速,验证码功能就是其中一个. 一.跟其他第三方一样,我们开发之前要做一些准备工作. 1.首先,去官网注册一个帐号:http://www.bmob.cn/: 2.然后就可以创建应用了:具体怎么做Bmob说得很清楚了(官方操作介绍),如果你不想看,我简单说一下:点击右

  • Android实现调用系统图库与相机设置头像并保存在本地及服务器

    废话不多说了,直接给大家贴代码了,具体代码如下所述: /** * 1.实现原理:用户打开相册或相机选择相片后,相片经过压缩并设置在控件上,图片在本地sd卡存一份(如果有的话,没有则内部存储,所以还 * 需要判断用户是否挂载了sd卡),然后在服务器上存储一份该图片,当下次再次启动应用时,会默认去sd卡加载该图片,如果本地没有,再会去联网请求 * 2.使用了picasso框架以及自定义BitmapUtils工具类 * 3.记得加上相关权限 * <uses-permission android:nam

  • Android中实现OkHttp上传文件到服务器并带进度

    在上一讲中 OkHttp下载文件并带进度条 中,我们知道怎样去下载文件了.那上传文件呢 一.编写服务器端 在上一讲服务器下新建UploadFileServlet,代码如下:然后重启服务器! @WebServlet("/UploadFileServlet") @MultipartConfig public class UploadFileServlet extends HttpServlet { private static final long serialVersionUID = 1

  • Android选择图片或拍照图片上传到服务器

    最近要搞一个项目,需要上传相册和拍照的图片,不负所望,终于完成了!  不过需要说明一下,其实网上很多教程拍照的图片,都是缩略图不是很清晰,所以需要在调用照相机的时候,事先生成一个地址,用于标识拍照的图片URI 具体上传代码: 1.选择图片和上传界面,包括上传完成和异常的回调监听 package com.spring.sky.image.upload; import java.util.HashMap; import java.util.Map; import android.app.Activi

  • Android实现蓝牙客户端与服务器端通信示例

    一.首先说明:蓝牙通信必须用手机测试,因为avd里没有相关的硬件,会报错! 好了,看看最后的效果图:   二.概述: 1.判断是否支持Bluetooth BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if(bluetoothAdapter == null) { //the device doesn't support bluetooth } else { //the device support

  • Android使用第三方服务器Bmob实现发送短信验证码

    调用Bmob第三方服务器实现短信验证的功能,大致思路如下: 随机产生6位数字,然后调用Bmob的请求短发函数发送者六位数到服务器,然后服务器给指定手机发送这6位验证码,然后感觉用户输入的数字进行判断,如果输入的和发送的相等,则验证成功. 第一步.请求验证码: SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sendTime = format.format(new Date());

  • android选择视频文件上传到后台服务器

    本文实例为大家分享了android选择视频文件上传到后台服务器的具体代码,供大家参考,具体内容如下 选择本地视频文件 附上Demo 首先第一步打开打开相册选择视频文件: Intent intent = new Intent(); intent.setType("video/*"); intent.setAction(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); ((Activity)

  • Android实现上传文件到服务器实例详解

    本实例实现每隔5秒上传一次,通过服务器端获取手机上传过来的文件信息并做相应处理:采用Android+Struts2技术. 一.Android端实现文件上传 1).新建一个Android项目命名为androidUpload,目录结构如下: 2).新建FormFile类,用来封装文件信息 package com.ljq.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce

  • Android中的Bmob移动后端云服务器功能

    源码下载:http://xiazai.jb51.net/201801/yuanma/BmobTest1.rar PS:一般情况下,我们在写android程序的时候,想要实现登录注册功能,可以选择自己用servlet作为服务端来实现过滤没有注册过的用户,但是太麻烦,而且不是随时都可以用的.这里介绍一个移动后端云服务器平台bmob,这不仅可以实现云数据库储存,还可以获取手机验证等,随时随地都很轻松,下面写一个小demo,实现一个登陆注册功能,认识增删查改.下面我稍微写一个例子,简单实现注册登录功能.

  • Android中RecyclerView拖拽、侧删功能的实现代码

    废话不多说,下面展示一下效果. 这是GridView主文件实现. public class GridViewActivity extends AppCompatActivity { RecyclerView mRecyclerView; List<String> mStringList; RecyclerAdapter mRecyAdapter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { s

  • Android中imageView图片放大缩小及旋转功能示例代码

    一.简介 二.方法 1)设置图片放大缩小效果 第一步:将<ImageView>标签中的android:scaleType设置为"fitCenter" android:scaleType="fitCenter" 第二步:获取屏幕的宽度 DisplayMetrics dm=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); dm.widthPixels 第三

  • Android中BroadcastReceiver实现短信关键字自动回复功能

    前言:因公司业务需要,需要一台手机专门回复客户订购的套餐的短信,之前一直是人工手动回复,但比较麻烦且回复可能不及时,于是项目经理就让实现根据短信的关键字自动回复功能. 实现手机短信监听的方式有两种:一是通过ContentObserver观察者实现监听,另一种就是通过广播即BroadcastReceiver实现短信监听,文章中通过使用BroadcastReceiver实现有新短信的及时监听及包含设定的关键字时自动回复. 效果图: 清单文件添加权限: <uses-permission android

  • Android中FTP上传、下载的功能实现(含进度)

    Android中使用的FTP上传.下载,含有进度. 代码部分主要分为三个文件:MainActivity,FTP,ProgressInputStream 1. MainActivity package com.ftp; import java.io.File; import java.io.IOException; import java.util.LinkedList; import com.ftp.FTP.DeleteFileProgressListener; import com.ftp.F

  • Android中AlarmManager+Notification实现定时通知提醒功能

    AlarmManager简介 AlarmManager实质是一个全局的定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver).本文将讲解一下如何使用AlarmManager实现定时提醒功能. 闹钟配置 周期闹钟 Intent intent = new Intent(); intent.setAction(GlobalValues.TIMER_ACTION_REPEATING); Pendi

  • 如何在Android中实现一个简易的Http服务器

    最近遇到一个需求需要在App中创建一个Http服务器供供浏览器调用,用了下开源的微型Htpp服务器框架:NanoHttpd,项目地址:https://github.com/NanoHttpd/nanohttpd 直接上代码 public class HttpServer extends NanoHTTPD { public HttpServer(int port) { super(port); } @Override public Response serve(IHTTPSession sess

  • android中GridView实现点击查看更多功能示例

    首先来看一下效果图:   先说一下我的需求:查看群成员,如果超过15人则全部显示,如果大于15人则先加载15人,其余的不显示,点击查看更多则加载全部.再来说一下我实现的逻辑:首先呢要判断群成员的人数,如果小于或者等于15就用GridView加载全部数据,隐藏查看更多的按钮.如果大于15人,则显示加载更多的按钮,先加载15条数据,其余的不加载,点击按钮之后获取全部数据放到自己写好的adapter里然后加载刷新,再隐藏加载更多的按钮. 好了,来看代码: <LinearLayout android:l

  • Android中实现下载和解压zip文件功能代码分享

    本文提供了2段Android代码,实现了从Android客户端下载ZIP文件并且实现ZIP文件的解压功能,非常实用,有需要的Android开发者可以尝试一下. 下载: DownLoaderTask.java 复制代码 代码如下: package com.johnny.testzipanddownload; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; im

  • Android中实现基本的短信拦截功能的代码示例

    要点 1.在Manifest.xml里加"接收"SMS的权限 <uses-permission Android:name="android.permission.RECEIVE_SMS"></uses-permission> 2.在Manifest.xml里注册一个receive <!-- 注册Receiver,并且设置优先级 --> <receiver android:name=".AutoSMS" a

随机推荐