語言

AccountManager 類別

定義

此類別提供使用者線上帳戶的集中登記系統存取。

[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
繼承
AccountManager
屬性

備註

此類別提供使用者線上帳戶的集中登記系統存取。 使用者需在每個帳號輸入一次憑證(使用者名稱與密碼),應用程式可透過「一鍵」核准存取線上資源。

不同的 線上服務 處理帳號和認證方式不同,因此帳號經理會針對不同 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

在回傳特定帳戶資訊的方法中,帳號名稱使用的 String 組合金鑰。

KeyAccounts
KeyAccountSessionBundle

Bundle 金鑰用於 Bundle in 結果和 #startAddAccountSession 朋友,回傳會話資料以便之後安裝帳號。

KeyAccountStatusToken

用於 String 帳號狀態令牌的組合金鑰,來自 Friends 的結果 #startAddAccountSession ,該 Friends 會返回特定帳號的資訊。

KeyAccountType

用於 String 帳戶類型的組合金鑰,來自返回特定帳戶資訊的方法。

KeyAndroidPackageName

呼叫者的 Android 套件會被設定在選項包中, AccountManager 並會傳達給 AccountManagerService 和 AccountAuthenticators。

KeyAuthenticatorTypes
KeyAuthFailedMessage
KeyAuthtoken

組合金鑰用於驗證代幣值,來自 Friends 的結果 #getAuthToken 。

KeyAuthTokenLabel
KeyBooleanResult
KeyCallerPid

來電應用程式的程序識別碼。

KeyCallerUid

來電應用程式的用戶介面(UID)。

KeyErrorCode
KeyErrorMessage
KeyIntent

用於 in Intent 的 bundle key 會產生可能需要呼叫者與使用者互動的方法。

KeyLastAuthenticatedTime

用來提供帳號憑證最後一次成功驗證的時間的 Bundle 金鑰。

KeyPassword

Bundle 金鑰用於直接在選項中提供密碼, #confirmCredentials而非以標準密碼提示提示使用者。

KeyUserdata
LoginAccountsChangedAction

當帳號新增、移除帳號或帳號憑證(儲存密碼等)變更時,AccountsService 以廣播意圖發送的行動。

PackageNameKeyLegacyNotVisible

設定預設可見性以設定不符合條件的 #PACKAGE_NAME_KEY_LEGACY_VISIBLE應用程式的鑰匙。

PackageNameKeyLegacyVisible

設定符合以下條件之一應用程式可見性的關鍵: <ul><li>目標 API 層級 android.os.Build.VERSION_CODES#O ,且已棄用 android.Manifest.permission#GET_ACCOUNTS 權限。

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
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
AddAccount(String, String, String[], Bundle, Activity, IAccountManagerCallback, Handler)

請使用者新增特定類型的帳號。

AddAccountExplicitly(Account, String, Bundle, IDictionary<String,Integer>)

直接將帳號加入 AccountManager。

AddAccountExplicitly(Account, String, Bundle)

直接將帳號加入 AccountManager。

AddOnAccountsUpdatedListener(IOnAccountsUpdateListener, Handler, Boolean, String[])

在此實例OnAccountsUpdateListener中加入 。AccountManager

AddOnAccountsUpdatedListener(IOnAccountsUpdateListener, Handler, Boolean)

在此實例OnAccountsUpdateListener中加入 。AccountManager

BlockingGetAuthToken(Account, String, Boolean)

這個便利助手會同步取得一個帶有 #getAuthToken(Account, String, boolean, AccountManagerCallback, Handler)的認證令牌。

ClearPassword(Account)

忘記儲存密碼。

Clone()

建立並回傳此物件的副本。

(繼承來源 Object)
ConfirmCredentials(Account, Bundle, Activity, IAccountManagerCallback, Handler)

確認使用者知道帳戶密碼,以確保自己是帳戶擁有者。

Construct(JniObjectReference, JniObjectReferenceOptions)

此類別提供使用者線上帳戶的集中登記系統存取。

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

此類別提供使用者線上帳戶的集中登記系統存取。

(繼承來源 JavaObject)
EditProperties(String, Activity, IAccountManagerCallback, Handler)

提供使用者更改驗證器設定的機會。

Equals(Object)

此類別提供使用者線上帳戶的集中登記系統存取。

(繼承來源 JavaObject)
Equals(Object)

表示是否有其他物體「等同」於此物。

(繼承來源 Object)
FinishSession(Bundle, Activity, IAccountManagerCallback, Handler)

結束由 或 #startAddAccountSession#startUpdateCredentialsSession開始的會話。

FromContext(Context)

會有一個與上下文關聯的帳戶管理員實例。

Get(Context)

會取得一個與上下文相關聯的 AccountManager 實例。

GetAccounts()

列出所有來電者可見的帳號,不論類型。

GetAccountsAndVisibilityForPackage(String, String)

取得所有特定類型的帳號及其對特定包裹的可見性。

GetAccountsByType(String)

列出所有特定類型的帳號,對來電者可見。

GetAccountsByTypeAndFeatures(String, String[], IAccountManagerCallback, Handler)

列出所有具有特定特徵的帳號。

GetAccountsByTypeForPackage(String, String)

在某些應用程式未被授權查看所有帳號的環境中,將可見帳號回傳到指定套件中。

GetAccountVisibility(Account, String)

為特定申請取得特定帳號的可見性。

GetAuthenticatorTypes()

列出目前註冊的認證者。

GetAuthToken(Account, String, Boolean, IAccountManagerCallback, Handler)
已淘汰.

會獲得特定帳號指定類型的認證令牌,若使用者必須輸入憑證,則可選擇性地發出通知。

GetAuthToken(Account, String, Bundle, Activity, IAccountManagerCallback, Handler)

會取得特定帳號指定的認證憑證,必要時會提示使用者輸入憑證。

GetAuthToken(Account, String, Bundle, Boolean, IAccountManagerCallback, Handler)

會獲得特定帳號指定類型的認證令牌,若使用者必須輸入憑證,則可選擇性地發出通知。

GetAuthTokenByFeatures(String, String, String[], Activity, Bundle, Bundle, IAccountManagerCallback, Handler)

這個便利助手結合 #getAccountsByTypeAndFeatures了 、 #getAuthToken、 和 #addAccount的功能。

GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
GetPackagesAndVisibilityForAccount(Account)

回傳包裹名稱和可見性,這些都是為特定帳號明確設定的。

GetPassword(Account)

會取得與帳號綁定的儲存密碼。

GetPreviousName(Account)

如果沒有,則會取得與帳號 null相關的先前名稱。

GetUserData(Account, String)

取得與帳號關聯的「金鑰」所命名的使用者資料。

HasFeatures(Account, String[], IAccountManagerCallback, Handler)

了解特定帳號是否具備所有指定功能。

InvalidateAuthToken(String, String)

移除 AccountManager 快取中的一個認證權杖。

IsCredentialsUpdateSuggested(Account, String, IAccountManagerCallback, Handler)

檢查是否#updateCredentials#startUpdateCredentialsSession或應就指定帳戶呼叫。

JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
NewChooseAccountIntent(Account, IList<Account>, String[], Boolean, String, String, String[], Bundle)
已淘汰.

已被棄用,改為 #newChooseAccountIntent(Account, List, String[], String, String, String[], Bundle)。

NewChooseAccountIntent(Account, IList<Account>, String[], String, String, String[], Bundle)

回傳一個意圖, Activity 提示使用者從帳號列表中選擇。

Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAccountAuthenticated(Account)

通知系統帳戶剛剛被驗證。

NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
PeekAuthToken(Account, String)

從 AccountManager 的快取中取得一個認證權杖。

RemoveAccount(Account, Activity, IAccountManagerCallback, Handler)

從 AccountManager 移除一個帳戶。

RemoveAccount(Account, IAccountManagerCallback, Handler)
已淘汰.

從 AccountManager 移除一個帳戶。

RemoveAccountExplicitly(Account)

直接移除帳號。

RemoveOnAccountsUpdatedListener(IOnAccountsUpdateListener)

移除 OnAccountsUpdateListener 先前登記的 #addOnAccountsUpdatedListener。

RenameAccount(Account, String, IAccountManagerCallback, Handler)

重新命名指定的 Account.

SetAccountVisibility(Account, String, AccountVisibility)

將特定帳號的可見性值設為特定套件。

SetAuthToken(Account, String, String)

為某個帳戶的快取新增一個認證權杖。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPassword(Account, String)

設定或忘記儲存密碼。

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

此類別提供使用者線上帳戶的集中登記系統存取。

(繼承來源 JavaObject)
SetUserData(Account, String, String)

為一個帳號設定一個 userdata 金鑰。

StartAddAccountSession(String, String, String[], Bundle, Activity, IAccountManagerCallback, Handler)

要求使用者使用指定類型帳號進行驗證。

StartUpdateCredentialsSession(Account, String, Bundle, Activity, IAccountManagerCallback, Handler)

會要求使用者輸入新密碼,但不會更新帳號已儲存的憑證,直到 #finishSession 被呼叫為止。

ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

回傳物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
UpdateCredentials(Account, String, Bundle, Activity, IAccountManagerCallback, Handler)

會要求使用者輸入新密碼,更新該帳號儲存的憑證。

Wait()

導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。

(繼承來源 Object)
Wait(Int64, Int32)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)

事件

名稱 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)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

此類別提供使用者線上帳戶的集中登記系統存取。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於