Android之Bmob移动后端云服务器

📅 发布时间:2026/8/27 12:49:45
Android之Bmob移动后端云服务器 PS一般情况下我们在写android程序的时候想要实现登录注册功能可以选择自己用servlet作为服务端来实现过滤没有注册过的用户但是太麻烦而且不是随时都可以用的。这里介绍一个移动后端云服务器平台bmob这不仅可以实现云数据库储存还可以获取手机验证等随时随地都很轻松下面写一个小demo实现一个登陆注册功能认识增删查改。下面我稍微写一个例子简单实现注册登录功能。1首先到bmob官网注册一个账号里面创建一个项目如图2创建一个android项目AndroidStudio1:添加依赖在app下的build.gradle中添加 compilecn.bmob.android:bmob-sdk:3.4.6compilecom.squareup.okhttp:okhttp:2.4.0//CDN文件服务使用okhttp相关包进行文件的上传和下载必填compilecom.squareup.okio:okio:1.4.0sourceSets{main.jniLibs.srcDirs[libs]}useLibraryorg.apache.http.legacy位置如图2添加权限!--允许联网--uses-permission android:nameandroid.permission.INTERNET/!--获取GSM2g、WCDMA联通3g等网络状态的信息--uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE/!--获取wifi网络状态的信息--uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE/!--保持CPU运转屏幕和键盘灯有可能是关闭的,用于文件上传和下载--uses-permission android:nameandroid.permission.WAKE_LOCK/!--获取sd卡写的权限用于文件上传和下载--uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE/!--允许读取手机状态 用于创建BmobInstallation--uses-permission android:nameandroid.permission.READ_PHONE_STATE/3:添加maven到指定的云库maven{urlhttps://raw.github.com/bmob/bmob-android-sdk/master}4初始化Bmob.initialize(this,“你的 应用ID”);3下面就是代码了写一个实体类personpackagecn.day1.model;importcn.bmob.v3.BmobObject;/** * Created by CMusketeer on 17/10/22. */publicclassPersonextendsBmobObject{privateString name;privateString password;publicStringgetName(){returnname;}publicvoidsetName(String name){this.namename;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(String password){this.passwordpassword;}}写三个布局分别是注册页面登录页面登录成功跳转的页面activity_main.xml?xml version1.0encodingutf-8?LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:contextcn.day1.bmobtest1.MainActivityTextViewandroid:gravitycenterandroid:textSize20dpandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:text登录/EditTextandroid:idid/id_usernameandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hintusername/EditTextandroid:idid/id_userpasswordandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hintpassword/LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalButtonandroid:idid/id_okandroid:layout_width0dpandroid:text登录android:layout_heightwrap_contentandroid:layout_weight1/Buttonandroid:idid/id_registerandroid:text注册android:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1//LinearLayout/LinearLayout注册页面register_layout.xml先把各页面都写了后续就好办了。?xml version1.0encodingutf-8?LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:contextcn.day1.bmobtest1.MainActivityTextViewandroid:gravitycenterandroid:textSize20dpandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:text注册中心/EditTextandroid:idid/id_register_usernameandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hintusername/EditTextandroid:idid/id_register_userpasswordandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hintpassword/LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalButtonandroid:idid/id_register_okandroid:text注册android:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1//LinearLayout/LinearLayout登录成功页面success.xml?xml version1.0encodingutf-8?LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentTextViewandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:text成功登录android:gravitycenterandroid:textSize50dp//LinearLayout注册ActivityRegisterActivity.java 功能增这里是一个简单的注册里面没有加判断所以一个号可以重复注册但是只有唯一ID。packagecn.day1.bmobtest1;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;importandroid.widget.TextView;importandroid.widget.Toast;importcn.bmob.v3.listener.SaveListener;importcn.day1.model.Person;/** * Created by CMusketeer on 17/10/22. */publicclassRegisterActivityextendsActivity{privateTextView register_user;privateTextView register_password;privateButton register_ok;privatePerson p2;OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.register_layout);addControl();//加载控件addRegisterShow();//注册方法}privatevoidaddRegisterShow(){register_ok.setOnClickListener(newView.OnClickListener(){OverridepublicvoidonClick(View v){final String rUserregister_user.getText().toString().trim();String rPasswordregister_password.getText().toString().trim();//判断用户名和密码是否为空,如果为空则不能进去。if(rUser.length()0rPassword.length()0){p2newPerson();p2.setName(rUser);p2.setPassword(rPassword);//插入方法p2.save(RegisterActivity.this,newSaveListener(){OverridepublicvoidonSuccess(){// TODO Auto-generated method stubregister_password.setText();register_user.setText();Toast.makeText(RegisterActivity.this,添加数据成功返回objectId为p2.getObjectId(),Toast.LENGTH_SHORT).show();}OverridepublicvoidonFailure(int code,String msg){// TODO Auto-generated method stubToast.makeText(RegisterActivity.this,创建数据失败msg,Toast.LENGTH_SHORT).show();}});}else{Toast.makeText(RegisterActivity.this,用户名或者密码不能为空,Toast.LENGTH_SHORT).show();}}});}privatevoidaddControl(){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 功能查packagecn.day1.bmobtest1;importandroid.content.Intent;importandroid.os.Bundle;importandroid.support.v7.app.AppCompatActivity;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;importandroid.widget.TextView;importandroid.widget.Toast;importjava.util.List;importcn.bmob.v3.Bmob;importcn.bmob.v3.BmobQuery;importcn.bmob.v3.listener.FindListener;importcn.day1.model.Person;publicclassMainActivityextendsAppCompatActivity{privatePerson p2;privateTextView lgUser;privateTextView lgPassword;privateButton btn_ok;privateButton btn_rg;OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);Bmob.initialize(this,你的 应用id);setContentView(R.layout.activity_main);addControl();addLogin();}privatevoidaddLogin(){btn_rg.setOnClickListener(newView.OnClickListener(){OverridepublicvoidonClick(View v){Intent intentnewIntent(MainActivity.this,RegisterActivity.class);startActivity(intent);}});btn_ok.setOnClickListener(newView.OnClickListener(){OverridepublicvoidonClick(View v){BmobQueryPersonquerynewBmobQueryPerson();query.findObjects(MainActivity.this,newFindListenerPerson(){String lgUlgUser.getText().toString().trim();String lgplgPassword.getText().toString().trim();int panduan1;OverridepublicvoidonSuccess(ListPersonlist){for(int i0;ilist.size();i){String namelist.get(i).getName();String passwordlist.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();panduan2;//成功后panduan等于2,则跳出该循环,并且把输入快都清空,跳转到指定页面lgUser.setText();lgPassword.setText();Intent intentnewIntent(MainActivity.this,Success.class);startActivity(intent);break;}}if(panduan1){Toast.makeText(MainActivity.this,登录失败,Toast.LENGTH_SHORT).show();}}OverridepublicvoidonError(int i,String s){}});}});}privatevoidaddControl(){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.javapackagecn.day1.bmobtest1;importandroid.app.Activity;importandroid.os.Bundle;/** * Created by CMusketeer on 17/10/22. */publicclassSuccessextendsActivity{OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.success);}}总结唯一id的获取可以通过用户名来获取当用户输入用户名时只要数据库中用户名和输入的一致则就可以list.get(i).getObjectId()处理增删查改 增 personnewPerson();person.setName(user);person.setAddress(password);person.save(newSaveListenerString(){Overridepublicvoiddone(String s,BmobException e){if(enull){Toast.makeText(MainActivity.this,成功,Toast.LENGTH_SHORT).show();}else{}}});删 Id可以通过查处所有的从而得到id idlist.get(i).getObjectId();personnewPerson();person.delete(id,newUpdateListener(){Overridepublicvoiddone(BmobException e){if(enull){Log.e(sss,删除成功);}}});查 和上面的查不大一样这也是一种方法//查询所有query.findObjects(newFindListenerPerson(){Overridepublicvoiddone(ListPersonlist,BmobException e){}}//查询单个query.getObject(idnewlistener)改 person.setName(“111”);person.update(id,newUpdateListener(){Overridepublicvoiddone(BmobException e){if(enull){// Toast.makeText(MainActivity.this, 更改成功, Toast.LENGTH_SHORT).show();Log.e(sss,更改成功);}}效果图