編輯:關於Android編程
前面說到如何使用小米的推送來實現簡單的聊天系統,雖然簡單實現了,但是對於你們來說想要真正的體驗效果就只能跟我互動,為了解決這個缺點,我最近完善了下,增加了添加朋友的功能,這樣你們就可以自己拿兩個測試機互相測試。就能體驗整個過程,下面還是簡單的說下。
其實主要用到的就是對數據庫的操作,但我這裡不講對數據庫方面的操作,因為這方面的內容有點多,就不到這裡展開,以後有時間再展開。上篇文章Android%E9%AB%98%E4%BB%BF%E5%BE%AE%E4%BF%A1%E4%B9%8Bmvp%E5%AE%9E%E7%8E%B0-%E4%BA%8C/">Android高仿微信之mvp實現(二)已經講到,當我們使用該軟件是必須先注冊,在注冊的時候我們已經向所有安裝該應用的設備發送了一條包裝了我們設備標識(regId)、用戶名(userName)、賬號(userPhone)。只要是注冊信息我們就會把它存儲到本地數據庫register表。現在我們就是從register中通過userPhone標識查詢你要添加的朋友是否存在,存在就顯示,當執行添加操作時,也要判斷是否已經添加了該好友,沒有的話就執行最後的添加操作,向該用戶發送一條添加好友的請求信息,同時把該用戶的相關信息添加到聊天記錄界面的數據表。為了簡單,我這裡取了一點巧,只要對方接受到添加好友請求信息,對方就默認添加了自己為好友,無需進行判斷是否接受請求。這樣就完成了整個的添加操作,下面展示一點代碼。
這裡主要是輸入要添加的賬戶號,因為我使用的是MVP模式,代碼過多所以我這裡把一些接口方法貼出了,具體的可以查看源碼。
View
public interface AddFriendsView {
void showSearch();
void goneSearch();
void jumpSearchResult(String text);
void changeText(CharSequence text);
void showToast(String text);
}
Presenter
public interface AddFriendsPresenter {
void switchView(CharSequence text);
void switchActicity(TextView searchContent, RegisterDataHelper helper);
}
因為該界面沒有對應數據的操作等,只是簡單的界面顯示,所以沒有Model
這裡也是接口
View
public interface SearchResultView {
void succeedToFinish();
void hideProgressDialog(ProgressDialog pd);
void showSucceedToast();
void showErrorToast();
}
Presenter
public interface SearchResultPresenter {
void checkSelection(Context context, String number, View view, SearchResultAdapter mAdapter);
}
Model
public interface SearchResultModel {
void buildDialog(Context context, String number, View view, SearchResultAdapter adapter,SearchResultModelImp.requestListener listener);
}
下面是執行添加的主要核心代碼:
@Override
public void buildDialog(final Context context, String number, final View view,
final SearchResultAdapter adapter, final requestListener listener) {
new AlertDialog.Builder(context)
.setIcon(R.drawable.icon)
.setTitle(R.string.dialog_tip)
.setMessage(String.format(context.getResources().getString(R.string.dialog_message), number))
.setPositiveButton(R.string.dialog_positive, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Cursor cursor = adapter.getCursor();
if (cursor.moveToPosition(view.getId())) {
String number = CursorUtils.formatString(cursor, RegisterDataHelper.RegisterDataInfo.NUMBER);
String regId = CursorUtils.formatString(cursor, RegisterDataHelper.RegisterDataInfo.REGID);
String userName = CursorUtils.formatString(cursor, RegisterDataHelper.RegisterDataInfo.USER_NAME);
WXDataHelper wxHelper = new WXDataHelper(context);
Cursor wxCursor = wxHelper.query(number, regId, userName);
if (wxCursor.getCount() > 0 || (number.equals(SPUtils.getString("userPhone"))
&& regId.equals(SPUtils.getString("regId")))) {
ToastUtils.showShort("你已經添加了該好友!");
} else {
//發送添加好友請求
pd = ProgressDialog.show(context, "添加請求中...", "請稍後...", true);
request(userName, number, regId, listener, cursor);
}
wxCursor.close();
}
}
})
.setNegativeButton(R.string.dialog_negative, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).show();
}
最後看下操作效果吧
感興趣的可以點擊下面的地址下載
源碼下載地址:https://github.com/idisfkj/HightCopyWX
當在非UI線程中更新UI(程序界面)時會出現如下圖所示的異常: 那如何才能在非UI線程中更細UI呢? 方法有很多種,在這裡主要介紹兩種: 第一種:在需要更新UI的代碼
本文目標在於指導新手,文章順序如下:Android Studio新手–>下載安裝配置–>零基礎入門–>基本使用&nd
復制代碼 代碼如下:package com.leeass.generate;import java.io.File;import java.io.FileFi
提起Service大家都很熟悉,它乃Android四(si)大(da)組(jing)件(gang)之一。但是說起IntentService有童靴或許有點陌生,看名字感覺和