Android開發(fā)之針對聯(lián)系人的封裝
大家可能在做app的時候,或多或少需要使用聯(lián)系人,而根據(jù)google提供的api,你需要編寫大量的代碼,例如首先需要查詢數(shù)據(jù)庫,涉及到數(shù)據(jù)庫表和字段以及對應(yīng)的SQL語句。
那么我們是否可以在我們的項(xiàng)目中添加聯(lián)系人模塊,這樣能夠更方便的使用手機(jī)聯(lián)系人呢,答案是肯定的,并將其作為一個獨(dú)立的模塊,這樣在你的其他app中,你都可以引入該模塊,或者你能夠?qū)⒃撃K上傳到maven庫,方便大家的使用。
那么先來看看效果吧:
首先是將來涉及到的各個模塊的item。
然后是單個模塊中的各個測試:
比如我們現(xiàn)在需要的是原生app中內(nèi)置的應(yīng)用,你需要點(diǎn)擊聯(lián)系人按鈕,或者是你需要自定義界面,你點(diǎn)擊聯(lián)系人自定義UI按鈕。
這是當(dāng)你選擇的是自定義聯(lián)系人,然后選擇的聯(lián)系人有多個電話的時候,你需要選擇:
返回結(jié)果是:
是不是很簡單,那么我們是怎么實(shí)現(xiàn)的呢:
封裝后的代碼調(diào)用
在此,我展現(xiàn)下我的代碼編寫風(fēng)格,你需要為按鈕添加點(diǎn)擊事件,比如聯(lián)系人按鈕,當(dāng)點(diǎn)擊聯(lián)系人按鈕:
ContactFactory.newContact(this).getContacts();
調(diào)用工廠類ContactFactory中的靜態(tài)newContact方法,然后調(diào)用getContacts方法,就可以實(shí)現(xiàn)針對系統(tǒng)原生app中的內(nèi)置聯(lián)系人的操作。
大家都應(yīng)該知道,當(dāng)你在聯(lián)系人中操作完,比如選擇聯(lián)系人完成后,你需要針對當(dāng)前選擇的id進(jìn)行第二次查詢操作,這個時候,我們接收數(shù)據(jù)是重寫onActivityResult方法。
而如果你在fragment中調(diào)用了startActivityForResult方法,你需要在你的該fragment類中重寫onActivityResult,這樣才能正確的接收數(shù)據(jù)。
因此,在封裝完成后,你僅僅需要在你調(diào)用getContacts后,重寫該類的onActivityResult方法,然后在該類中調(diào)用:
ContactFactory.newContact(this).onActivityResult(requestCode, resultCode, data, new ContactCallback() { @Override public void onSuccess(@NonNull String contactNumber, @NonNull String contactName) { mText.setText(contactName + contactNumber); } @Override public void onFailed(@NonNull int errCode, @NonNull String message) { mText.setText(errCode + message); } });
你需要有一個匿名內(nèi)部類,其會返回onSuccess和onFailed方法,然后針對聯(lián)系人和電話號碼,你可以做相關(guān)的展示。
封裝后總結(jié)
在你某個activity類或者fragment中調(diào)用:
ContactFactory.newContact(this).getContacts();
在該類中重寫方法:
ContactFactory.newContact(this).onActivityResult(requestCode, resultCode, data, null);
總結(jié)
我覺得針對聯(lián)系人的封裝還是很有必要的,然后大家也可以通過https://github.com/neuyu/android-best-practices/tree/master/app 查看相關(guān)源碼,歡迎star和fork,后期會將單獨(dú)的模塊上傳到maven庫,方便大家使用,同時也希望大家能夠給相關(guān)模塊的開發(fā)提供寶貴的建議,謝謝大家指正。
相關(guān)文章
淺談Android輕量級的數(shù)據(jù)緩存框架RxCache
本篇文章主要介紹了淺談Android輕量級的數(shù)據(jù)緩存框架RxCache,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08android查看網(wǎng)絡(luò)圖片的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了android查看網(wǎng)絡(luò)圖片的實(shí)現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04Android頁面之間進(jìn)行數(shù)據(jù)回傳的方法分析
這篇文章主要介紹了Android頁面之間進(jìn)行數(shù)據(jù)回傳的方法,結(jié)合實(shí)例形式分析了Android頁面之間進(jìn)行數(shù)據(jù)的傳遞與處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下2016-06-06Android中操作SQLite數(shù)據(jù)庫快速入門教程
這篇文章主要介紹了Android中操作SQLite數(shù)據(jù)庫快速入門教程,本文講解了數(shù)據(jù)庫基礎(chǔ)概念、Android平臺下數(shù)據(jù)庫相關(guān)類、創(chuàng)建數(shù)據(jù)庫、向表格中添加數(shù)據(jù)、從表格中查詢記錄等內(nèi)容,需要的朋友可以參考下2015-03-03Android Studio 3.0中mipmap-anydpi-v26是什么東東
在Android Studio 3.0中一旦我們創(chuàng)建了一個項(xiàng)目,一個名為mipmap-anydpi-v26自動創(chuàng)建的文件夾在res文件夾下。它究竟能干什么?為什么我們需要這個?我們在開發(fā)時該如何利用它,下面通過本文給大家介紹下2017-12-12Android開發(fā)之imageView圖片按比例縮放的實(shí)現(xiàn)方法
這篇文章主要介紹了Android開發(fā)之imageView圖片按比例縮放的實(shí)現(xiàn)方法,較為詳細(xì)的分析了Android中ImageView控件的scaleType屬性控制圖片縮放的具體用法,需要的朋友可以參考下2016-01-01Android SQLite數(shù)據(jù)庫增刪改查操作的使用詳解
本篇文章介紹了,在Android中SQLite數(shù)據(jù)庫增刪改查操作的使用詳解。需要的朋友參考下2013-04-04Android 拍照選擇圖片并上傳功能的實(shí)現(xiàn)思路(包含權(quán)限動態(tài)獲取)
這篇文章主要介紹了Android 拍照(選擇圖片)并上傳(包含權(quán)限動態(tài)獲取),本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12