1 /* 2 * Copyright (C) 2016 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.annotation.IntRange; 20 import android.annotation.NonNull; 21 import android.os.RemoteCallback; 22 23 /** 24 * Account manager local system service interface. 25 * 26 * @hide Only for use within the system server. 27 */ 28 public abstract class AccountManagerInternal { 29 30 /** 31 * Listener for explicit UID account access grant changes. 32 */ 33 public interface OnAppPermissionChangeListener { 34 35 /** 36 * Called when the explicit grant state for a given UID to 37 * access an account changes. 38 * 39 * @param account The account 40 * @param uid The UID for which the grant changed 41 */ onAppPermissionChanged(Account account, int uid)42 public void onAppPermissionChanged(Account account, int uid); 43 } 44 45 /** 46 * Requests that a given package is given access to an account. 47 * The provided callback will be invoked with a {@link android.os.Bundle} 48 * containing the result which will be a boolean value mapped to the 49 * {@link AccountManager#KEY_BOOLEAN_RESULT} key. 50 * 51 * @param account The account for which to request. 52 * @param packageName The package name for which to request. 53 * @param userId Concrete user id for which to request. 54 * @param callback A callback for receiving the result. 55 */ requestAccountAccess(@onNull Account account, @NonNull String packageName, @IntRange(from = 0) int userId, @NonNull RemoteCallback callback)56 public abstract void requestAccountAccess(@NonNull Account account, 57 @NonNull String packageName, @IntRange(from = 0) int userId, 58 @NonNull RemoteCallback callback); 59 60 /** 61 * Check whether the given UID has access to the account. 62 * 63 * @param account The account 64 * @param uid The UID 65 * @return Whether the UID can access the account 66 */ hasAccountAccess(@onNull Account account, @IntRange(from = 0) int uid)67 public abstract boolean hasAccountAccess(@NonNull Account account, @IntRange(from = 0) int uid); 68 69 /** 70 * Adds a listener for explicit UID account access grant changes. 71 * 72 * @param listener The listener 73 */ addOnAppPermissionChangeListener( @onNull OnAppPermissionChangeListener listener)74 public abstract void addOnAppPermissionChangeListener( 75 @NonNull OnAppPermissionChangeListener listener); 76 77 /** 78 * Backups the account access permissions. 79 * @param userId The user for which to backup. 80 * @return The backup data. 81 */ backupAccountAccessPermissions(int userId)82 public abstract byte[] backupAccountAccessPermissions(int userId); 83 84 /** 85 * Restores the account access permissions. 86 * @param data The restore data. 87 * @param userId The user for which to restore. 88 */ restoreAccountAccessPermissions(byte[] data, int userId)89 public abstract void restoreAccountAccessPermissions(byte[] data, int userId); 90 } 91