AccountManager 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
此類別提供使用者線上帳戶的集中登記系統存取。
[Android.Runtime.Register("android/accounts/AccountManager", DoNotGenerateAcw=true)]
public class AccountManager : Java.Lang.Object
[<Android.Runtime.Register("android/accounts/AccountManager", DoNotGenerateAcw=true)>]
type AccountManager = class
inherit Object
- 繼承
- 屬性
備註
此類別提供使用者線上帳戶的集中登記系統存取。 使用者需在每個帳號輸入一次憑證(使用者名稱與密碼),應用程式可透過「一鍵」核准存取線上資源。
不同的 線上服務 處理帳號和認證方式不同,因此帳號經理會針對不同 EM 帳號類型<>使用 Pluggable <EM>Authenticator</EM> 模組。<> 認證器(可能由第三方撰寫)負責驗證帳號憑證及儲存帳號資訊的細節。 例如,Google、Facebook 和 Microsoft Exchange 各自擁有自己的認證器。
許多伺服器支援 <某種形式的 em>認證憑證</em>,可以用來驗證伺服器請求,而無需傳送使用者的實際密碼。 (認證權杖通常以獨立請求建立,該請求包含使用者的憑證。)AccountManager 可以為應用程式產生認證權杖,因此應用程式不需要直接處理密碼。 認證權杖通常可重複使用並由 AccountManager 快取,但必須定期更新。 當令牌停止運作時,應用程式有責任<>將其失效<或>授權,讓 AccountManager 知道需要重新生成。
存取伺服器的應用程式通常會經過以下步驟:
<ul><li>取得 AccountManager 的實例。#get(Context)
<li>列出可用帳戶,使用或 #getAccountsByType#getAccountsByTypeAndFeatures。 通常應用程式只會對具有特定 <em>類型/em< 的帳號感興趣,該類型>能識別驗證器。 Account <em>功能</em> 用於識別特定帳戶子類型與功能。 帳號類型與功能皆為驗證器專屬字串,應用程式必須與其偏好的驗證器協調識別。
<li>選擇一個或多個可用帳號,可能透過詢問使用者偏好。 若無合適的帳號可用, #addAccount 可能會呼叫以提示使用者建立相應類型的帳號。
<li><b 重要:>/b< 如果應用程式使用先前記憶的帳戶選擇,必須確保該帳戶仍在回傳>#getAccountsByType帳戶清單中。 請求一個已不在裝置上的帳號的認證令牌會導致未定義的失敗。
<li>請使用其中一種 #getAuthToken 方法或相關輔助工具,為所選帳號申請認證權杖。 請參閱每種方法的說明以了解精確使用與錯誤處理細節。
<li>請用驗證令牌提出請求。 認證權杖的形式、請求格式以及所使用的協定,都是你所存取的服務所專屬的。 應用程式可以使用任何有用的網路與協定函式庫。
<li><b>重要:</b> 如果請求失敗且出現認證錯誤,可能是快取的認證令牌已過時,伺服器不再承認。 應用程式必須呼叫 #invalidateAuthToken 來移除快取中的標記,否則請求將持續失敗! 在使認證令牌失效後,立即回到上面「請求認證令牌」的步驟。 若第二次程序失敗,則可視為「真正」的認證失敗,並通知使用者或其他適當行動。
</ul>
有些 AccountManager 方法可能需要與使用者互動,以提示憑證、提供選項,或要求使用者新增帳戶。 呼叫者可選擇是否允許 AccountManager 直接啟動必要的使用者介面並等待使用者,或回傳一個意圖,呼叫者可用來啟動介面,或(在某些情況下)安裝通知,讓使用者可隨時選擇啟動介面。 若要讓 AccountManager 直接啟動介面,呼叫者必須提供當前的前景 Activity 上下文。
許多 AccountManager 方法會將 AccountManagerCallback 和 Handler 視為參數。 這些方法會立即回傳並非同步執行。 如果提供了回調, AccountManagerCallback#run 當請求完成時,無論是否成功,都會在處理程序執行緒中被呼叫。 結果是透過呼叫AccountManagerFuture#getResult()AccountManagerFuture方法回傳的 來取得(同時也會傳給回調)。 此方法等待操作完成(如有需要),若操作中發生錯誤,則回傳結果或拋出例外。 若要同步發送請求,請在收到方法的未來訊息後立即呼叫 AccountManagerFuture#getResult() ;無需提供回撥。
可能阻塞的請求,包括 AccountManagerFuture#getResult(),絕不能在應用程式的主事件執行緒中呼叫。 如果這些操作在主執行緒上使用,則會丟棄 IllegalStateException 。
Java 文件 android.accounts.AccountManager。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| AccountManager(IntPtr, JniHandleOwnership) |
用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。 |
欄位
| 名稱 | Description |
|---|---|
| ActionAccountRemoved |
當任何帳號被移除或更名時,AccountsService 以廣播意圖方式發送的行動。 |
| ActionAuthenticatorIntent | |
| AuthenticatorAttributesName | |
| AuthenticatorMetaDataName | |
| ErrorCodeBadArguments | |
| ErrorCodeBadAuthentication | |
| ErrorCodeBadRequest | |
| ErrorCodeCanceled | |
| ErrorCodeInvalidResponse | |
| ErrorCodeNetworkError | |
| ErrorCodeRemoteException | |
| ErrorCodeUnsupportedOperation | |
| KeyAccountAuthenticatorResponse | |
| KeyAccountManagerResponse | |
| KeyAccountName |
在回傳特定帳戶資訊的方法中,帳號名稱使用的 |
| KeyAccounts | |
| KeyAccountSessionBundle |
Bundle 金鑰用於 |
| KeyAccountStatusToken |
用於 |
| KeyAccountType |
用於 |
| KeyAndroidPackageName |
呼叫者的 Android 套件會被設定在選項包中, |
| KeyAuthenticatorTypes | |
| KeyAuthFailedMessage | |
| KeyAuthtoken |
組合金鑰用於驗證代幣值,來自 Friends 的結果 |
| KeyAuthTokenLabel | |
| KeyBooleanResult | |
| KeyCallerPid |
來電應用程式的程序識別碼。 |
| KeyCallerUid |
來電應用程式的用戶介面(UID)。 |
| KeyErrorCode | |
| KeyErrorMessage | |
| KeyIntent |
用於 in |
| KeyLastAuthenticatedTime |
用來提供帳號憑證最後一次成功驗證的時間的 Bundle 金鑰。 |
| KeyPassword |
Bundle 金鑰用於直接在選項中提供密碼, |
| KeyUserdata | |
| LoginAccountsChangedAction |
當帳號新增、移除帳號或帳號憑證(儲存密碼等)變更時,AccountsService 以廣播意圖發送的行動。 |
| PackageNameKeyLegacyNotVisible |
設定預設可見性以設定不符合條件的 |
| PackageNameKeyLegacyVisible |
設定符合以下條件之一應用程式可見性的關鍵: <ul><li>目標 API 層級 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
此類別提供使用者線上帳戶的集中登記系統存取。 (繼承來源 JavaObject) |
| JniPeerMembers |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
方法
事件
| 名稱 | Description |
|---|---|
| AccountsUpdated |
當帳戶經理上任及帳戶組合變更時,會發生這種情況。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
此類別提供使用者線上帳戶的集中登記系統存取。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
此類別提供使用者線上帳戶的集中登記系統存取。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
此類別提供使用者線上帳戶的集中登記系統存取。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
此類別提供使用者線上帳戶的集中登記系統存取。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
此類別提供使用者線上帳戶的集中登記系統存取。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
此類別提供使用者線上帳戶的集中登記系統存取。 (繼承來源 JavaObject) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
此類別提供使用者線上帳戶的集中登記系統存取。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |