成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android開發:創建自定義帳戶類型

移動開發 Android
首先你需要一種獲取用戶憑據的方法。這有可能像一個詢問用戶名和密碼的對話框一樣簡單。或者它可能是一個更奇特的程序,比如一次性密碼或生物識別掃描。無論哪種方法,你有責任去實現這些需求:收集用戶憑據、在服務器上驗證這些憑據、在設備商保存憑據。

到目前為止我們已經討論了如何訪問Google API,它使用由谷歌定義的賬戶和用戶。如果你有自己的線上服務,而它卻沒有谷歌賬戶或用戶,那么你將如何做?其實可以相對直接地在用戶設備上安裝一個新 的賬戶類型。這節課解釋如何創建一個和內建賬戶一樣能工作的自定義帳戶類型。

實現你的自定義帳戶代碼

首先你需要一種獲取用戶憑據的方法。這有可能像一個詢問用戶名和密碼的對話框一樣簡單。或者它可能是一個更奇特的程序,比如一次性密碼或生物識別掃描。無論哪種方法,你有責任去實現這些需求:

  1. 收集用戶憑據
  2. 在服務器上驗證這些憑據
  3. 在設備商保存憑據

通常情況下,以上三個需求都可以在一個activity中處理。我們稱之為“驗證者activity”。

因為他們都需要和賬戶管理* ( AccountAuthenticatorActivity * ,通過它你可以專注去創建你自己的自定義身份驗證。

至于如何處理驗證者activity的前兩個需求,即憑證收集和驗證,這完全取決于你。(如果假定只有一種方法來實現它,那么很顯然我們就沒必要去做“自定義”賬戶類型。)第三個需求有一個典型的,而且頗為簡單的實現方式:

  1. final Account account = new Account(mUsername, your_account_type); 
  2. mAccountManager.addAccountExplicitly(account, mPassword, null); 

對安全更注意一些

理解* AccountManager *不是一種加密服務或者密鑰鏈這件事非常重要。它僅僅按照你傳遞的內容用'''明文'''來存儲。在大部分設備上,這不是一個典型的顧慮,因為設備把他們存儲在只有根用戶才能訪問的數據庫中。但是在已經被Root過的設備上,通過'_adb連接可以讓任何人讀取憑據信息。

因此,你不能直接傳遞用戶的真實密碼給* android.os.Bundle) AccountManager.addAccountExplicitly()* 。 相反,你應該存儲加密的安全令牌來保障限制攻擊者的使用。如果你的用戶憑證需要保護一些敏感信息,你應該謹慎考慮做出相似的事情。

** 記住:** 當涉及到安全有關代碼,請按照“流言終結者(Mythbusters)”規則:不要在家里嘗試這個!在執行任何自定義代碼之前請一定要咨詢安全專業人士。

既然安全免責聲明是不合適的,那么現在是時候回去工作了。你已經理解了自定義帳戶代碼的核心,剩下的就是去實現它了。

繼承AbstractAccountAuthenticator

為了讓* AccountManager 能夠和你的自定義用戶賬戶代碼一起工作,你需要一個實現了 AccountManager * 所需要的接口的類。這個類就是''“驗證類”(authenticator class)_。

建立一個驗證類的最簡單的方法是繼承* AbstractAccountAuthenticator 并且實現其中的抽象方法。如果你已經學習了之前的課程, AbstractAccountAuthenticator * 的抽象類方法可能看起來比較熟悉:他們的功能剛好與你在前一課中調用的賬戶信息和授權令牌的方法相反。

正確地實現一個驗證類要求一連串單獨的代碼段。首先,* AbstractAccountAuthenticator * 有七個你必須重寫的抽象方法。其次,你需要在你的application menifes(將在下一節講到)中為'''"android.accounts.AccountAuthenticator"'''添加一個* intent filter * 。最后,你必須提供兩個XML資源,其中包括你的自定義帳戶類型的名稱和系統將在這個類型賬戶后面顯示的圖標。

你可以查找一個“一對一向導”來實現一個成功的驗證類和在* AbstractAccountAuthenticator * 文檔中的XML文件。同樣在SampleSyncAdapter示例程序中有一個簡單的實現方法。

如果你已讀過SampleSyncAdapter的代碼,你就會發現有很多個方法在一個bundle鐘返回一個intent。而這個intent和 將被用于運行你的自定義的驗證activity的是同一個intent。如果你的驗證activity需要任何特殊的初始化參數,你可以使用* Intent.putExtra()) * 來將他們添加進該intent中。

創建一個驗證服務

既然你已經有了一個驗證類,你需要一個地方來讓它運行。賬戶驗證在多個應用中必須是可用的,并且能夠在后臺運行,所以他們自然需要運行在一個* 服務Service * 中。我們稱之為驗證服務。

你的驗證服務一定要非常簡單。它需要做的僅僅是在* onCreate()) 方法中創建一個你的驗證類的實例,并且調用 getIBinder()) 和 onBind()) * 方法。* SampleSyncAdapter示例程序 *中有一個很好的驗證服務的例子。

不要忘記在你的manifest文件中添加一個* * 標簽和一個AccountAuthenticator intent的intent filter(過濾器),并且聲明這個賬戶驗證器:

  1. <service ...> 
  2.    <intent-filter> 
  3.       <action android:name="android.accounts.AccountAuthenticator" /> 
  4.    </intent-filter> 
  5.    <meta-data android:name="android.accounts.AccountAuthenticator" 
  6.              android:resource="@xml/authenticator" /></service> 

發布你的服務

你已經完成了!系統現在可以在那些大牌賬戶類型比如"Google"和"Corporate"當中認出你的賬戶類型。你可以使用* Accounts & Sync(賬戶與同步)* 設置頁面來添加一個賬戶,而且那些需要你自定義類型的賬戶的軟件能夠像任何其他賬戶類型一樣美劇和驗證你的賬戶類型。

當然,這些全都是假設你的賬戶服務被正確的安裝在設備上的。如果只有一個程序需要訪問這個服務,那么就這就會很簡單,只需要在應用中捆綁這個服務就 可以了。但是如果你想讓你的賬戶服務被用于不止一個應用,那么事情就會變得棘手了。因為你不想把服務綁定到每一個的應用上,并且在設備上占用大量的空間來 保存多個副本。

一種解決方法把這個服務換成一個小的,有特殊目的的APK。當一個應用想要使用你的自定義帳戶類型,它可以檢查這個設備看你的自定義帳戶類型有沒有 運行。如果沒有,它能夠帶領用戶到Google Play下載這個服務。這剛開始看起來似乎是一個大麻煩,但是同讓每一個應用程序在使用自定義賬戶類型時重復輸入憑據的方案對比來看,這很顯然要簡單得多。

責任編輯:閆佳明 來源: eoe
相關推薦

2015-02-12 15:33:43

微信SDK

2016-11-16 21:55:55

源碼分析自定義view androi

2016-12-26 15:25:59

Android自定義View

2013-05-20 17:48:20

2009-06-08 20:13:36

Eclipse自定義控

2022-05-07 10:22:32

JavaScript自定義前端

2011-12-05 15:02:21

Knockout

2013-04-01 14:35:10

Android開發Android自定義x

2013-05-20 17:33:44

Android游戲開發自定義View

2012-05-18 10:52:20

TitaniumAndroid模塊自定義View模塊

2011-05-05 13:30:17

GridViewListView布局

2011-12-26 10:11:08

JSP

2009-06-24 15:13:36

自定義JSF組件

2010-10-20 16:07:48

SQL用戶自定義角色

2017-05-18 12:36:16

android萬能適配器列表視圖

2010-02-07 14:02:16

Android 界面

2016-04-12 10:07:55

AndroidViewList

2017-05-19 10:03:31

AndroidBaseAdapter實踐

2023-08-10 17:14:52

鴻蒙自定義彈窗

2021-07-15 16:41:21

Swift查詢函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本三级在线网站 | 亚洲成人免费电影 | 天堂中文在线观看 | 夜夜久久 | 国产亚洲精品久久久久久豆腐 | h在线 | 中文字幕人成乱码在线观看 | 国产超碰人人爽人人做人人爱 | 久久一区 | 99re在线视频 | 免费视频一区二区 | 天堂国产 | 一级片免费网站 | 亚洲a视频 | 国产一区二区三区免费观看在线 | a欧美| 一二三区在线 | 亚洲综合在线一区二区 | 日韩av三区 | 一区二区视屏 | 日韩精品久久一区 | 琪琪午夜伦伦电影福利片 | 天天操夜夜看 | 草草视频在线观看 | 国产一区高清 | 亚洲国产一区二区三区, | 黄色综合| 97免费在线视频 | 瑟瑟免费视频 | 中文字幕在线观看视频一区 | 亚欧性视频 | 久久精品视频在线免费观看 | 成人小视频在线观看 | 99reav| 国产亚洲精品美女久久久久久久久久 | 日韩三级电影在线看 | 亚洲综合在线播放 | www.788.com色淫免费 | 久久亚洲国产 | 91五月婷蜜桃综合 | 久久精品黄色 |