From c1cf161af036e0f337b58ef0739a8ff2e42f01e7 Mon Sep 17 00:00:00 2001 From: Alexandra Gherghina Date: Thu, 5 Jun 2014 10:49:14 +0100 Subject: Modifies APIs for retrieving managed profile accounts. This is needed for Account Settings UI. Bug: 13656853 Change-Id: I33129e4b7b33b428a7bf670259accacb60f62d9b --- core/java/android/accounts/AccountManager.java | 46 ++++++++++++++++++++++++- core/java/android/accounts/IAccountManager.aidl | 2 +- 2 files changed, 46 insertions(+), 2 deletions(-) (limited to 'core/java/android/accounts') diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index 12fcdcf..806a55b 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -359,7 +359,29 @@ public class AccountManager { */ public AuthenticatorDescription[] getAuthenticatorTypes() { try { - return mService.getAuthenticatorTypes(); + return mService.getAuthenticatorTypes(UserHandle.getCallingUserId()); + } catch (RemoteException e) { + // will never happen + throw new RuntimeException(e); + } + } + + /** + * @hide + * Lists the currently registered authenticators for a given user id. + * + *

It is safe to call this method from the main thread. + * + *

The caller has to be in the same user or have the permission + * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL}. + * + * @return An array of {@link AuthenticatorDescription} for every + * authenticator known to the AccountManager service. Empty (never + * null) if no authenticators are known. + */ + public AuthenticatorDescription[] getAuthenticatorTypesAsUser(int userId) { + try { + return mService.getAuthenticatorTypes(userId); } catch (RemoteException e) { // will never happen throw new RuntimeException(e); @@ -389,6 +411,28 @@ public class AccountManager { /** * @hide + * Lists all accounts of any type registered on the device for a given + * user id. Equivalent to getAccountsByType(null). + * + *

It is safe to call this method from the main thread. + * + *

This method requires the caller to hold the permission + * {@link android.Manifest.permission#GET_ACCOUNTS}. + * + * @return An array of {@link Account}, one for each account. Empty + * (never null) if no accounts have been added. + */ + public Account[] getAccountsAsUser(int userId) { + try { + return mService.getAccountsAsUser(null, userId); + } catch (RemoteException e) { + // won't ever happen + throw new RuntimeException(e); + } + } + + /** + * @hide * For use by internal activities. Returns the list of accounts that the calling package * is authorized to use, particularly for shared accounts. * @param packageName package name of the calling app. diff --git a/core/java/android/accounts/IAccountManager.aidl b/core/java/android/accounts/IAccountManager.aidl index 86e279f..1373dc8 100644 --- a/core/java/android/accounts/IAccountManager.aidl +++ b/core/java/android/accounts/IAccountManager.aidl @@ -29,7 +29,7 @@ import android.os.Bundle; interface IAccountManager { String getPassword(in Account account); String getUserData(in Account account, String key); - AuthenticatorDescription[] getAuthenticatorTypes(); + AuthenticatorDescription[] getAuthenticatorTypes(int userId); Account[] getAccounts(String accountType); Account[] getAccountsForPackage(String packageName, int uid); Account[] getAccountsByTypeForPackage(String type, String packageName); -- cgit v1.1