android最佳實踐(四)

這是一個系列,咱們將其命名爲android最佳實踐,若是你尚未看以前的文章:android

Android最佳實踐(一)git

android最佳實踐(二)github

android最佳實踐(三)數據庫

android最佳實踐(五)segmentfault

Android最佳實踐(六)之掃描二維碼模塊api

你們可能在作app的時候,或多或少須要使用聯繫人,而根據google提供的api,你須要編寫大量的代碼,例如首先須要查詢數據庫,涉及到數據庫表和字段以及對應的SQL語句。app

那麼咱們是否能夠在咱們的項目中添加聯繫人模塊,這樣可以更方便的使用手機聯繫人呢,答案是確定的,並將其做爲一個獨立的模塊,這樣在你的其餘app中,你均可以引入該模塊,或者你可以將該模塊上傳到maven庫,方便你們的使用。maven

那麼先來看看效果吧:ide

首先是未來涉及到的各個模塊的item。測試

圖片描述

而後是單個模塊中的各個測試:

圖片描述

好比咱們如今須要的是原生app中內置的應用,你須要點擊聯繫人按鈕,或者是你須要自定義界面,你點擊聯繫人自定義UI按鈕。

這是當你選擇的是自定義聯繫人,而後選擇的聯繫人有多個電話的時候,你須要選擇:

圖片描述

返回結果是:

圖片描述

是否是很簡單,那麼咱們是怎麼實現的呢:

封裝後的代碼調用

在此,我展示下個人代碼編寫風格,你須要爲按鈕添加點擊事件,好比聯繫人按鈕,當點擊聯繫人按鈕:

ContactFactory.newContact(this).getContacts();

調用工廠類ContactFactory中的靜態newContact方法,而後調用getContacts方法,就能夠實現針對系統原生app中的內置聯繫人的操做。

你們都應該知道,當你在聯繫人中操做完,好比選擇聯繫人完成後,你須要針對當前選擇的id進行第二次查詢操做,這個時候,咱們接收數據是重寫onActivityResult方法。

而若是你在fragment中調用了startActivityForResult方法,你須要在你的該fragment類中重寫onActivityResult,這樣才能正確的接收數據。

所以,在封裝完成後,你僅僅須要在你調用getContacts後,重寫該類的onActivityResult方法,而後在該類中調用:

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);
            }
        });

你須要有一個匿名內部類,其會返回onSuccess和onFailed方法,而後針對聯繫人和電話號碼,你能夠作相關的展現。

封裝後總結

在你某個activity類或者fragment中調用:

ContactFactory.newContact(this).getContacts();

在該類中重寫方法:

ContactFactory.newContact(this).onActivityResult(requestCode, resultCode, data, null);

總結

我以爲針對聯繫人的封裝仍是頗有必要的,而後你們也能夠經過https://github.com/neuyu/android-best-practices/tree/master/app 查看相關源碼,歡迎star和fork,後期會將單獨的模塊上傳到maven庫,方便你們使用,同時也但願你們可以給相關模塊的開發提供寶貴的建議,謝謝你們指正。

相關文章
相關標籤/搜索