天天看點

Android特色開發之賬戶管理

本文節選于機械工業出版社推出的《Android應用開發揭秘》一書,作者為楊豐盛。本書内容全面,詳細講解了Android架構、Android元件、使用者界面開發、遊戲開發、資料存儲、多媒體開發和網絡開發等基礎知識,而且還深入闡述了傳感器、語音識别、桌面元件開發、Android遊戲引擎設計、Android應用優化、OpenGL等進階知識。另外,本書還全面介紹了如何利用原生的C/C++(NDK)和Python、Lua等腳本語言(Android Scripting Environment)來開發Android應用,并以疊代的方式重制了各種常用的Android應用和經典Android遊戲的開發全過程。

Android特色開發之賬戶管理

9.5  賬戶管理

Android2.0中加入了一個新的包android.accounts,該包主要包括了集中式的賬戶管理API,用以安全地存儲和通路認證的令牌和密碼,比如,我們的手機存在多個賬戶,每個賬戶下面都有不同的資訊,甚至每個賬戶都可以與不同的伺服器之間進行資料同步(例如,手機賬戶中的聯系人可以是一個Gmail賬戶中的通訊錄,可聯網進行同步更新)。下面首先來看看android.accounts包提供了哪些功能,如表9-3所示。

表9-3  android.accounts包的功能描述

Android特色開發之賬戶管理

光看這些介紹,也許會難以了解,下面我們結合一個示例程式來學習android.accounts包中各功能的使用。該示例實作了賬戶添加功能,可以添加多個賬戶來集中管理,程式運作界面如圖9-27所示,點選“建立賬戶”按鈕後,就可以添加賬戶的相關資訊,如圖9-28所示。程式的具體實作請參見本書所附代碼:第9章\Examples_09_08。

該示例中一共建立了4個賬戶,是以在退出程式、點選建立聯系人時,會出現如圖9-29所示的界面來提示使用者選擇在哪一個賬戶中建立聯系人,這樣使得每個賬戶獨立隔開,又統一管理,非常友善。

Android特色開發之賬戶管理
Android特色開發之賬戶管理

圖9-29  建立聯系人

由于在該示例中對使用者賬戶資訊進行了操作,是以首先要確定在AndroidManifest.xml檔案中對操作權限進行聲明,以及确定API等級為5,代碼如下:

該示例的UI界面布局設計很簡單,大家可以參考本書第4章的内容。首先來看一下如圖9-27所示的Activity類的實作,我們需要通過AccountManager類的get方法來取得AccountManager對象,代碼如下:

在AccountManager中提供了很多方法來供我們管理這些賬戶,常用方法如表9-4所示。

表9-4  AccountManager中的常用方法

Android特色開發之賬戶管理

通過這些方法就可以很輕松地操作這些賬戶資料,比如,将指定類型的賬戶資訊全部列出來,代碼如下:

下面我們重點來學習如何将賬戶資訊添加到賬戶管理器中。首先,需要實作一個AccountAuthenticatorActivity類來供使用者輸入賬戶資訊,即AbstractAccountAuthenticator的一個Activity,如代碼清單9-15所示。

代碼清單9-15  第9章\Examples_09_08\src\com\yarin\android\Examples_09_08\auth\SleepyAccount- AuthenticatorActivity.java

在上述代碼清單中,我們先通過賬戶名及其類型建構一個Account對象,然後将伺服器資料通過Bundle方式加入進來,最後通過AccountManager的addAccountExplicitly方法向賬戶管理器中添加一個賬戶資訊。

接下來需要添加一個賬戶服務(Service)和一個驗證器(AbstractAccountAuthenticator)。

首先,建構一個authenticator.xml,如代碼清單9-16所示。

代碼清單9-16  第9章\Examples_09_08\res\xml\ authenticator.xml

然後,在AndroidManifest.xml檔案中開啟一個賬戶管理服務,加入如下代碼:

賬戶服務類的實作很簡單,就是在intent.getAction()的動作為android.accounts. AccountManager. ACTION_AUTHENTICATOR_INTENT時,通過AccountAuthenticator的getIBinder方法傳回一個IBinder,如代碼清單9-17所示。

代碼清單9-17  第9章\Examples_09_08\src\com\yarin\android\Examples_09_08\ SleepyAccounts-Service.java

最後,最重要的是AbstractAccountAuthenticator類的實作,因為在添加、操作賬戶資訊時會通過AbstractAccountAuthenticator實作異步調用。下面是實作的addAccount方法,如代碼清單9-18所示。

代碼清單9-18  addAccount方法

有關賬戶管理的内容,可能比較難以了解,建議大家一定要結合本節的示例程式進行學習,同時可以參考Android 2.0 SDK文檔。

9.6  小結

本章内容之間的聯系不是很緊密,都是一些Android中的特色功能,也正是這些功能吸引了不少開發者和使用者。這些特色功能主要包括:Android中傳感器的使用、語音識别技術、Google Map API在Android中的使用和出色的桌面元件開發,最後學習了Android中賬戶管理功能的簡單實作。這些功能在日常生活中運用得也比較廣泛,比如GPS導航、路徑規劃等,希望大家着重了解本章的内容,開發出具有創意的應用。