Android使用後端雲Bmob實現登陸、註冊及失物招領

最近在使用後端雲Bmob對數據進行存儲,目的是在不搭建服務器的前提下,能對Android應用的數據進行操做處理。html

1、建立帳號 須要的本身去註冊,後端雲Bmob首頁地址:www.bmob.cn/android

2、網站後臺建立應用(如圖) 這裏使用的是免費版的 git

在這裏插入圖片描述

建立成功以後點擊建立的應用進去,在設置->應用祕鑰中能夠找到應用祕鑰 github

在這裏插入圖片描述

3、AndroidStudio SDK導入信息配置 詳細參考:doc.bmob.cn/data/androi…apache

一、在 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
}
複製代碼

二、在app的build.gradle文件中添加compile依賴文件bash

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'
    }

複製代碼

三、在你的應用程序的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" />
複製代碼

4、應用中使用詳情 這裏演示部分的API 一、啓動頁 網絡

在這裏插入圖片描述

初始化BmobSDK:app

//第一:默認初始化
        Bmob.initialize(this, "Your Application ID");
複製代碼

二、由登陸界面進入註冊頁面,進行帳戶註冊

在這裏插入圖片描述

輸入帳號密碼後點擊註冊按鈕:

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後臺有信心記錄:

在這裏插入圖片描述

三、註冊成功後回到登陸界面

在這裏插入圖片描述

輸入帳號密碼後點擊登陸按鈕:

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-一、信息完成後,點擊右上角點擊發布按鈕,此時須要添加數據: 先建立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-二、發佈信息:

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-三、添加數據成功後,在後臺會有插入的數據:

在這裏插入圖片描述

五、主界面的信息須要讀取後臺用戶插入的數據

在這裏插入圖片描述

數據的查詢:

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("查詢數據失敗");
                }
            }
        });
複製代碼

六、長按RecyclerView每條Item進行編輯與刪除操做

在這裏插入圖片描述

6-一、刪除操做便是將後臺中的將選中的信息刪除

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-二、編輯操做即對數據進行修改

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();
                }
            }
        });
複製代碼

七、使用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-一、實現登陸、註冊的過程: 使用Bmob提供專門的用戶類——BmobUser來自動處理用戶帳戶管理所需的功能。有了這個類,你就能夠在你的應用程序中添加用戶帳戶功能。BmobUser是BmobObject的一個子類,它繼承了BmobObject全部的方法,具備BmobObject相同的功能。不一樣的是,BmobUser增長了一些特定的關於用戶帳戶管理相關的功能。

8-二、失物招領: 這個過程當中,咱們對數據進行了添加、查詢、刪除以及更新操做,固然後端雲Bmob還不止提供了這些API,還有不少API還須要掌握。

8-三、須要Demo源碼的童鞋,能夠在底部公衆號回覆:"BmobDemo"便可獲取。

如下是我的公衆號(longxuanzhigu),以後發佈的文章會同步到該公衆號,方便交流學習Android知識及分享我的愛好文章:

在這裏插入圖片描述
相關文章
相關標籤/搜索