1 /* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.accounts; 18 19 import android.accounts.IAccountManagerResponse; 20 import android.accounts.Account; 21 import android.accounts.AuthenticatorDescription; 22 import android.content.IntentSender; 23 import android.os.Bundle; 24 import android.os.RemoteCallback; 25 import android.os.UserHandle; 26 27 import java.util.Map; 28 29 /** 30 * Central application service that provides account management. 31 * @hide 32 */ 33 interface IAccountManager { 34 String getPassword(in Account account); 35 String getUserData(in Account account, String key); 36 AuthenticatorDescription[] getAuthenticatorTypes(int userId); 37 Account[] getAccounts(String accountType, String opPackageName); 38 Account[] getAccountsForPackage(String packageName, int uid, String opPackageName); 39 Account[] getAccountsByTypeForPackage(String type, String packageName, String opPackageName); 40 Account[] getAccountsAsUser(String accountType, int userId, String opPackageName); 41 void hasFeatures(in IAccountManagerResponse response, in Account account, in String[] features, 42 String opPackageName); 43 void getAccountByTypeAndFeatures(in IAccountManagerResponse response, String accountType, 44 in String[] features, String opPackageName); 45 void getAccountsByFeatures(in IAccountManagerResponse response, String accountType, 46 in String[] features, String opPackageName); 47 boolean addAccountExplicitly(in Account account, String password, in Bundle extras); 48 void removeAccount(in IAccountManagerResponse response, in Account account, 49 boolean expectActivityLaunch); 50 void removeAccountAsUser(in IAccountManagerResponse response, in Account account, 51 boolean expectActivityLaunch, int userId); 52 boolean removeAccountExplicitly(in Account account); 53 void copyAccountToUser(in IAccountManagerResponse response, in Account account, 54 int userFrom, int userTo); 55 void invalidateAuthToken(String accountType, String authToken); 56 String peekAuthToken(in Account account, String authTokenType); 57 void setAuthToken(in Account account, String authTokenType, String authToken); 58 void setPassword(in Account account, String password); 59 void clearPassword(in Account account); 60 void setUserData(in Account account, String key, String value); 61 void updateAppPermission(in Account account, String authTokenType, int uid, boolean value); 62 63 void getAuthToken(in IAccountManagerResponse response, in Account account, 64 String authTokenType, boolean notifyOnAuthFailure, boolean expectActivityLaunch, 65 in Bundle options); 66 void addAccount(in IAccountManagerResponse response, String accountType, 67 String authTokenType, in String[] requiredFeatures, boolean expectActivityLaunch, 68 in Bundle options); 69 void addAccountAsUser(in IAccountManagerResponse response, String accountType, 70 String authTokenType, in String[] requiredFeatures, boolean expectActivityLaunch, 71 in Bundle options, int userId); 72 void updateCredentials(in IAccountManagerResponse response, in Account account, 73 String authTokenType, boolean expectActivityLaunch, in Bundle options); 74 void editProperties(in IAccountManagerResponse response, String accountType, 75 boolean expectActivityLaunch); 76 void confirmCredentialsAsUser(in IAccountManagerResponse response, in Account account, 77 in Bundle options, boolean expectActivityLaunch, int userId); 78 boolean accountAuthenticated(in Account account); 79 void getAuthTokenLabel(in IAccountManagerResponse response, String accountType, 80 String authTokenType); 81 82 /* Shared accounts */ 83 Account[] getSharedAccountsAsUser(int userId); 84 boolean removeSharedAccountAsUser(in Account account, int userId); 85 void addSharedAccountsFromParentUser(int parentUserId, int userId, String opPackageName); 86 87 /* Account renaming. */ 88 void renameAccount(in IAccountManagerResponse response, in Account accountToRename, String newName); 89 String getPreviousName(in Account account); 90 boolean renameSharedAccountAsUser(in Account accountToRename, String newName, int userId); 91 92 /* Add account in two steps. */ 93 void startAddAccountSession(in IAccountManagerResponse response, String accountType, 94 String authTokenType, in String[] requiredFeatures, boolean expectActivityLaunch, 95 in Bundle options); 96 97 /* Update credentials in two steps. */ 98 void startUpdateCredentialsSession(in IAccountManagerResponse response, in Account account, 99 String authTokenType, boolean expectActivityLaunch, in Bundle options); 100 101 /* Finish session started by startAddAccountSession(...) or startUpdateCredentialsSession(...) 102 for user */ 103 void finishSessionAsUser(in IAccountManagerResponse response, in Bundle sessionBundle, 104 boolean expectActivityLaunch, in Bundle appInfo, int userId); 105 106 /* Check if an account exists on any user on the device. */ 107 boolean someUserHasAccount(in Account account); 108 109 /* Check if credentials update is suggested */ 110 void isCredentialsUpdateSuggested(in IAccountManagerResponse response, in Account account, 111 String statusToken); 112 113 /* Returns Map<String, Integer> from package name to visibility with all values stored for given account */ 114 Map getPackagesAndVisibilityForAccount(in Account account); 115 boolean addAccountExplicitlyWithVisibility(in Account account, String password, in Bundle extras, 116 in Map visibility); 117 boolean setAccountVisibility(in Account a, in String packageName, int newVisibility); 118 int getAccountVisibility(in Account a, in String packageName); 119 /* Type may be null returns Map <Account, Integer>*/ 120 Map getAccountsAndVisibilityForPackage(in String packageName, in String accountType); 121 122 void registerAccountListener(in String[] accountTypes, String opPackageName); 123 void unregisterAccountListener(in String[] accountTypes, String opPackageName); 124 125 /* Check if the package in a user can access an account */ 126 boolean hasAccountAccess(in Account account, String packageName, in UserHandle userHandle); 127 /* Crate an intent to request account access for package and a given user id */ 128 IntentSender createRequestAccountAccessIntentSenderAsUser(in Account account, 129 String packageName, in UserHandle userHandle); 130 131 void onAccountAccessed(String token); 132 } 133