Android開發(fā):記住你的用戶
當您記住他們的名字時,每個人都會很喜歡。最簡單的一個例子,您能夠做的,讓您的應(yīng)用更加受人喜愛的,最有效的方法是記住您的用戶是誰——尤其是當 用戶使用一個新的設(shè)備,或者是開始像攜帶電話一樣攜帶平板電腦時。但您如何知道您的用戶是誰?您如何在一個新的設(shè)備上認出他們?
對于大多數(shù)應(yīng)用來說,答案是AccontManager API。使用user's permission,您可以使用裝好管理器取得用戶儲存在他們設(shè)備上的賬號名。
集成用戶的賬號可以讓您做各種各樣的事情,例如:
- 使用用戶的email地址自動填充表格。
- 取得一個綁定到用戶而不是設(shè)備的ID。
確定您的賬戶管理器
應(yīng)用基本上都是使用下述三種技術(shù)中的一個來記住用戶的:
- * 請求用戶鍵入用戶名
- * 檢索唯一的設(shè)備ID來記住這個設(shè)備
- * 通過AccontManager檢索內(nèi)置的賬號
選項(1)是有問題的。首先,讓用戶在進入您的應(yīng)用之前鍵入用戶名會讓您的應(yīng)用缺乏吸引力。其次,無法保證選擇的用戶名是唯一的。
選項(2)對用戶來說是省事的,但達成它是比較棘手的。更重要的是,這種方法只會允許您在同一個設(shè)備上記住用戶。想象一下某人升級了一個牛逼閃閃的新設(shè)備,但卻發(fā)現(xiàn)您的應(yīng)用沒有記住他的挫折感。
選項(3)是首選。賬戶管理器允許您獲取存儲在用戶設(shè)備上的賬戶信息。正如我們在本節(jié)看到的,使用賬戶管理器使您只需要向您的UI添加一對額外的接口就能夠記住用戶,而和用戶擁有多少設(shè)備無關(guān)。
決定使用賬戶的類型
Android設(shè)備可以儲存來自不同提供商的多個賬戶。當您向AccontManager請求賬戶名時,您可以通過賬戶類型過濾器來選擇。賬戶類型是一個字符串,它唯一標示了實體創(chuàng)建的賬號。例如Google賬號擁有一個"com.google"的類型,而Twitter使用"com.twitter.android.auth.login"的賬戶類型。
請求GET_ACCOUNT權(quán)限
In order to get a list of accounts on the device, your app needs the GET_ACCOUNTS permission. Add a tag in your manifest file to request this permission:
為了獲取設(shè)備上的賬戶列表,您的應(yīng)用需要GET_ACCOUNTS權(quán)限。在您的manifest文件中添加標簽來請求這個權(quán)限:
- <manifest ... >
- <uses-permission android:name="android.permission.GET_ACCOUNTS" />
- ...
- </manifest>
向賬戶管理器請求賬戶列表
當您決定了您所感興趣的賬戶類型,您需要查詢此類型的賬戶.調(diào)用AccountManager.get())可以獲得一個AccountManager實例。然后使用這個實例來調(diào)用getAccountsByType()) 。
- AccountManager am = AccountManager.get(this); // "this" references the current Context
- Account[] accounts = am.getAccountsByType("com.google");
使用賬號對象個性化您的應(yīng)用
賬號對象包含一個賬戶名,Google賬戶的賬戶名是一個email地址。您可以用不同的方法來使用這個信息,例如:
- * 作為表單的自動填充選項,這樣用戶就不必手動輸入賬號信息。
- * 作為進入您自己在線的,儲存使用和個性化信息的數(shù)據(jù)庫密匙。
決定只要用戶名是否足夠
賬戶名是記住用戶的好方法,但是Accont對象自身不保護您的數(shù)據(jù),也不會給您除了用戶的賬戶名以外的任何信息。如果您的應(yīng)用需要允許用戶去在想訪問私 人數(shù)據(jù),您需要一些更強壯的方法:authentication(認證)。下一節(jié)解釋了如何使用現(xiàn)有的在線服務(wù)進行用戶驗證。之后一節(jié)有關(guān)寫一個自定義驗 證器使您能夠安裝您自己的賬戶類型。