日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Android如何使用Bmob后端云實(shí)現(xiàn)失物招領(lǐng)功能

瀏覽:26日期:2022-09-20 11:49:14

最近在使用后端云Bmob對數(shù)據(jù)進(jìn)行存儲,目的是在不搭建服務(wù)器的前提下,能對Android應(yīng)用的數(shù)據(jù)進(jìn)行操作處理,其實(shí)這篇是比較久之前寫的了,有些童鞋反饋說現(xiàn)在的源碼會有問題,所以我又重新運(yùn)行了一下,隨著Bmob版本的更新,之前的源碼跑不起來,現(xiàn)在重新更新了最新版本做了個(gè)Demo.

實(shí)現(xiàn)步驟:

一、創(chuàng)建賬號

需要的自己去注冊,后端云Bmob首頁地址:https://www.bmob.cn/

二、網(wǎng)站后臺創(chuàng)建應(yīng)用(如圖)

這里使用的是免費(fèi)版的

Android如何使用Bmob后端云實(shí)現(xiàn)失物招領(lǐng)功能

創(chuàng)建成功之后點(diǎn)擊創(chuàng)建的應(yīng)用進(jìn)去,在設(shè)置->應(yīng)用秘鑰中可以找到應(yīng)用秘鑰

Android如何使用Bmob后端云實(shí)現(xiàn)失物招領(lǐng)功能

三、AndroidStudio SDK導(dǎo)入信息配置

詳細(xì)參考:http://doc.bmob.cn/data/android/index.html

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系統(tǒng)所需,如果這句話報(bào)錯(cuò),可在dependencies標(biāo)簽下使用compile ’cn.bmob.android:http-legacy:1.0’** useLibrary ’org.apache.http.legacy’ ...}

dependencies { //以下SDK開發(fā)者請根據(jù)需要自行選擇 //bmob-sdk:Bmob的android sdk包,包含了Bmob的數(shù)據(jù)存儲、文件等服務(wù),以下是最新的bmob-sdk: //3.5.5:請務(wù)必查看下面注釋[1] implementation ’cn.bmob.android:bmob-sdk:3.5.5’ //bmob-push:Bmob的推送包 implementation ’cn.bmob.android:bmob-push:0.8’ //bmob-im:Bmob的即時(shí)通訊包,注意每個(gè)版本的im依賴特定版本的bmob-sdk,具體的依賴關(guān)系可查看下面注釋[2] implementation ’cn.bmob.android:bmob-im:2.0.5@aar’ implementation ’cn.bmob.android:bmob-sdk:3.4.7-aar’ //bmob-sms :Bmob單獨(dú)為短信服務(wù)提供的包 implementation ’cn.bmob.android:bmob-sms:1.0.1’ //如果你想應(yīng)用能夠兼容Android6.0,請?zhí)砑哟艘蕾?org.apache.http.legacy.jar) implementation ’cn.bmob.android:http-legacy:1.0’}

3、在你的應(yīng)用程序的AndroidManifest.xml文件中添加相應(yīng)的權(quán)限:

<uses-permission android:name='android.permission.INTERNET' /> <!--獲取GSM(2g)、WCDMA(聯(lián)通3g)等網(wǎng)絡(luò)狀態(tài)的信息 --> <uses-permission android:name='android.permission.ACCESS_NETWORK_STATE' /> <!--獲取wifi網(wǎng)絡(luò)狀態(tài)的信息 --> <uses-permission android:name='android.permission.ACCESS_WIFI_STATE' /> <!--保持CPU 運(yùn)轉(zhuǎn),屏幕和鍵盤燈有可能是關(guān)閉的,用于文件上傳和下載 --><uses-permission android:name='android.permission.WAKE_LOCK' /> <!--獲取sd卡寫的權(quán)限,用于文件上傳和下載--><uses-permission android:name='android.permission.WRITE_EXTERNAL_STORAGE' /><!--允許讀取手機(jī)狀態(tài) 用于創(chuàng)建BmobInstallation--> <uses-permission android:name='android.permission.READ_PHONE_STATE' />四、應(yīng)用中使用詳情

這里演示部分的API:

1、啟動頁:

Android如何使用Bmob后端云實(shí)現(xiàn)失物招領(lǐng)功能

初始化BmobSDK:

//第一:默認(rèn)初始化Bmob.initialize(this,'Your Application ID');2、由登錄界面進(jìn)入注冊頁面,進(jìn)行賬戶注冊:

Android如何使用Bmob后端云實(shí)現(xiàn)失物招領(lǐng)功能

輸入賬號密碼后點(diǎn)擊注冊按鈕:

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后端云實(shí)現(xiàn)失物招領(lǐng)功能

3、注冊成功后回到登錄界面

Android如何使用Bmob后端云實(shí)現(xiàn)失物招領(lǐng)功能

輸入賬號密碼后點(diǎn)擊登錄按鈕:

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) { //登錄成功后進(jìn)入主界面 Intent intent = new Intent(LoginActivity.this, LostAndFoundActivity.class); startActivity(intent); finish(); } else { showToast('' + e.getMessage()); hiddenProgressBar();//隱藏 } }}); } }, 3000); }4、登錄成功后進(jìn)入主界面,右上方按鈕進(jìn)入失物招領(lǐng)的信息發(fā)布界面

Android如何使用Bmob后端云實(shí)現(xiàn)失物招領(lǐng)功能

4-1、信息完成后,點(diǎn)擊右上角點(diǎn)擊發(fā)布按鈕,此時(shí)需要添加數(shù)據(jù):先創(chuàng)建bean類,繼承BmobObject類

public class LostInfomationReq extends BmobObject{ private String title; //標(biāo)題 private String phoneNum;//手機(jī)號碼 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、發(fā)布信息:

/** * @param titleName 標(biāo)題 * @param num 電話號碼 * @param descridle 描述 */ private void publishLostInfo(String titleName, String num, String descridle) { LostInfomationReq lostInfomationReq = new LostInfomationReq(); lostInfomationReq.setTitle(titleName);//titleName為用戶輸入的標(biāo)題 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('招領(lǐng)信息發(fā)布成功'); //成功后提示主界面刷新數(shù)據(jù) Intent intent = new Intent(); setResult(RESULT_OK, intent); //成功后將頁面銷毀 finish();} else { showToast('信息發(fā)布失敗');} } }); }

4-3、添加數(shù)據(jù)成功后,在后臺會有插入的數(shù)據(jù):

Android如何使用Bmob后端云實(shí)現(xiàn)失物招領(lǐng)功能

5、主界面的信息需要讀取后臺用戶插入的數(shù)據(jù):

Android如何使用Bmob后端云實(shí)現(xiàn)失物招領(lǐng)功能

數(shù)據(jù)的查詢:

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('查詢數(shù)據(jù)失敗');} } }); }6、長按RecyclerView每條Item進(jìn)行編輯與刪除操作:

Android如何使用Bmob后端云實(shí)現(xiàn)失物招領(lǐng)功能

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() {@Overridepublic void done(BmobException e) { if (e == null) { lostInfomationReqList.remove(position); lostAndFoundAdapter.setData(lostInfomationReqList); lostAndFoundAdapter.notifyDataSetChanged(); } else { showToast('刪除數(shù)據(jù)失敗'); }} }); } }

6-2、編輯操作即對數(shù)據(jù)進(jìn)行修改

/** * @param titleName 標(biāo)題 * @param num 電話號碼 * @param descridle 描述 */ private void updataInfo(String titleName, String num, String descridle) { LostInfomationReq lostInfomationReq = new LostInfomationReq(); lostInfomationReq.setTitle(titleName);//titleName為用戶輸入的標(biāo)題 lostInfomationReq.setPhoneNum(num);//num為用戶輸入的號碼 lostInfomationReq.setDesc(descridle);//descridle為信息描述 lostInfomationReq.update(infomationReq.getObjectId(), new UpdateListener() { @Override public void done(BmobException e) {if (e == null) { showToast('更新信息成功'); //更新數(shù)據(jù)后提示主界面進(jìn)行數(shù)據(jù)刷新 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); //設(shè)置焦點(diǎn) popupWindow.setFocusable(true); //觸摸框外 popupWindow.setOutsideTouchable(true); //點(diǎn)擊空白處的時(shí)候讓PopupWindow消失 popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000)); //設(shè)置偏移量 popupWindow.showAsDropDown(holder.time, 300, -100); //showAsDropDown(View anchor):相對某個(gè)控件的位置(正左下方),無偏移 // showAsDropDown(View anchor, int xoff, int yoff):相對某個(gè)控件的位置,有偏移 //showAtLocation(View parent, int gravity, int x, int y):相對于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以設(shè)置偏移或無偏移 //點(diǎn)擊編輯按鈕 contentview.findViewById(R.id.edit_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {//回調(diào)給主界面,進(jìn)行數(shù)據(jù)操作mItemClickListener.onEditOrDeleteClick(pos, EDIT_CODE);//銷毀彈出框popupWindow.dismiss(); } }); //點(diǎn)擊刪除按鈕 contentview.findViewById(R.id.delete_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {//回調(diào)給主界面,進(jìn)行數(shù)據(jù)操作mItemClickListener.onEditOrDeleteClick(pos, DELETE_CODE);//銷毀彈出框popupWindow.dismiss(); } }); }8、總結(jié)

8-1、實(shí)現(xiàn)登錄、注冊的過程:

使用Bmob提供專門的用戶類——BmobUser來自動處理用戶賬戶管理所需的功能。有了這個(gè)類,你就可以在你的應(yīng)用程序中添加用戶賬戶功能。BmobUser是BmobObject的一個(gè)子類,它繼承了BmobObject所有的方法,具有BmobObject相同的功能。不同的是,BmobUser增加了一些特定的關(guān)于用戶賬戶管理相關(guān)的功能。

8-2、失物招領(lǐng):

這個(gè)過程中,我們對數(shù)據(jù)進(jìn)行了添加、查詢、刪除以及更新操作,當(dāng)然后端云Bmob還不止提供了這些API,還有很多API還需要掌握。

BmobDemo源碼:鏈接:https://pan.baidu.com/s/1wTcWWEitQT65MDtr3PSvhQ提取碼:emue

以上就是Android如何使用Bmob后端云實(shí)現(xiàn)失物招領(lǐng)功能的詳細(xì)內(nèi)容,更多關(guān)于Android 實(shí)現(xiàn)失物招領(lǐng)功能的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精成人品2018| 国产无遮挡裸体免费久久| 青青伊人久久| 日本伊人午夜精品| 亚洲精品伊人| 免费成人av在线播放| 蜜臀久久99精品久久久久宅男 | 快she精品国产999| 免费看精品久久片| 亚洲青青久久| 97精品久久| 欧美久久久网站| 欧美在线首页| 你懂的网址国产 欧美| 精品视频免费| 天堂av在线| 久久精品主播| 欧美在线资源| 亚洲日产国产精品| 欧美精品国产| 国产美女高潮在线| 999国产精品永久免费视频app| 国产99久久| 爽爽淫人综合网网站| 亚洲精品亚洲人成在线观看| 日本欧美韩国一区三区| 老牛国内精品亚洲成av人片| 欧美一级鲁丝片| 免费久久精品| 亚洲人成毛片在线播放女女| 欧美中文高清| 色综合狠狠操| 国产99久久| 中文在线日韩| 美腿丝袜亚洲一区| 久久国产小视频| 亚洲深夜av| 国产伦理一区| 日韩理论片av| 午夜影院欧美| 91成人精品观看| 国产成人精品一区二区三区视频| 精品捆绑调教一区二区三区| 美女精品在线| 国产精品v一区二区三区| 国产a亚洲精品| 久久福利毛片| 国产美女亚洲精品7777| 热三久草你在线| 丝瓜av网站精品一区二区| 国产探花一区在线观看| 91看片一区| 最新国产精品| av资源新版天堂在线| 国产精品美女| 国产欧美一区| 欧美日韩在线播放视频| 亚洲人成亚洲精品| 激情黄产视频在线免费观看| 亚洲欧美日韩专区| 精品国产一区二区三区2021| 午夜日韩av| 日本视频在线一区| 中文另类视频| 国产日本亚洲| 亚洲精品va| 欧美激情麻豆| 在线亚洲国产精品网站| 国产精品网在线观看| 一区免费在线| 久久亚洲黄色| 中文字幕av亚洲精品一部二部| 久久精品天堂| 黄色日韩在线| 电影91久久久| 久久亚洲国产精品一区二区| 久久久久久自在自线| 美女网站久久| 伊伊综合在线| 国产欧美成人| 日韩在线网址| 女人av一区| 国内自拍视频一区二区三区| 午夜亚洲福利| 欧美日韩在线二区| 久久精品九色| 爽好久久久欧美精品| 日韩精品一区二区三区免费观影| 91嫩草精品| 亚洲一区国产| 久久精品在线| 亚洲三级欧美| 久久免费精品| 日韩久久99| 亚洲中午字幕| 久久三级视频| 国产一区一一区高清不卡| 日韩精品欧美大片| 99视频一区| 99成人在线视频| 日韩电影免费网站| 麻豆精品久久久| 日韩精品视频在线看| 麻豆久久精品| 国产视频一区免费看| 久久要要av| 日韩毛片视频| 午夜av不卡| 麻豆一区二区99久久久久| 欧美一级一区| 日本91福利区| 亚洲免费福利一区| 国产精品毛片一区二区三区| 欧美日韩高清| 欧美日韩精品一本二本三本| 成人福利视频| 日韩大片免费观看| 久久精品三级| 成人国产精品久久| 美腿丝袜亚洲三区| 美女国产精品久久久| 欧美日本久久| 国产精品欧美在线观看| 五月国产精品| 亚洲人成亚洲精品| 四虎国产精品免费久久| 一本一道久久a久久| 婷婷五月色综合香五月| 热久久免费视频| 四虎精品一区二区免费| 日韩高清成人在线| 国产欧美大片| 国产精品1区| 国产va免费精品观看精品视频| 国产一区日韩| 国产超碰精品| 五月婷婷亚洲| 在线精品一区二区| 在线看片日韩| 国产日韩高清一区二区三区在线| 欧美黄色精品| 黄色在线网站噜噜噜| 99精品在线观看| 亚洲精品极品少妇16p| 亚洲欧美日韩国产综合精品二区| 亚洲一区欧美激情| 蜜臀av一区二区三区| 久久国产精品久久w女人spa| 欧美精品中文| 精品亚洲成人| 久久青草久久| 蜜臀av一区二区在线免费观看| 日韩中文字幕| 国产欧美一区二区色老头| 久久中文字幕一区二区| av最新在线| 影音国产精品| 欧美一级一区| 97精品一区| 久久国产66| 国产日本亚洲| 久久久久欧美精品| 久久午夜精品| 久久av日韩| 在线一区av| 免费日韩av片| 国产精品网站在线看| 午夜久久中文| 日韩亚洲国产欧美| 91国内精品| 性欧美videohd高精| 老色鬼久久亚洲一区二区| 91在线成人| 四虎影视精品| 日韩欧美久久| 日韩av福利| 亚洲精品少妇| 国产传媒在线| 亚洲久久视频| 成午夜精品一区二区三区软件| 午夜欧美理论片| 国产亚洲久久| 欧美成人高清| 日本综合精品一区| 国产 日韩 欧美一区| 亚洲三级网站| 三上悠亚国产精品一区二区三区 | 免费看一区二区三区| 亚洲性图久久| 国产精品黄色| 狠狠爱成人网| 久久中文字幕一区二区三区| 尤物在线精品| 久久精品网址| 久久高清国产| 国产第一亚洲| 日本欧美在线看| 亚洲欧洲高清| 国产精品一区二区99| 午夜久久影院|