IDevicePolicyManager.aidl revision 56681f761e941b1268cde9fc71de39d133280d27
1/*
2**
3** Copyright 2010, The Android Open Source Project
4**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9**     http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17
18package android.app.admin;
19
20import android.app.admin.NetworkEvent;
21import android.app.IApplicationThread;
22import android.app.IServiceConnection;
23import android.app.admin.SystemUpdateInfo;
24import android.app.admin.SystemUpdatePolicy;
25import android.app.admin.PasswordMetrics;
26import android.content.ComponentName;
27import android.content.Intent;
28import android.content.IntentFilter;
29import android.content.pm.IPackageDataObserver;
30import android.content.pm.ParceledListSlice;
31import android.content.pm.StringParceledListSlice;
32import android.graphics.Bitmap;
33import android.net.ProxyInfo;
34import android.net.Uri;
35import android.os.Bundle;
36import android.os.PersistableBundle;
37import android.os.RemoteCallback;
38import android.os.UserHandle;
39import android.security.keymaster.KeymasterCertificateChain;
40import android.security.keystore.ParcelableKeyGenParameterSpec;
41import android.telephony.data.ApnSetting;
42
43import java.util.List;
44
45/**
46 * Internal IPC interface to the device policy service.
47 * {@hide}
48 */
49interface IDevicePolicyManager {
50    void setPasswordQuality(in ComponentName who, int quality, boolean parent);
51    int getPasswordQuality(in ComponentName who, int userHandle, boolean parent);
52
53    void setPasswordMinimumLength(in ComponentName who, int length, boolean parent);
54    int getPasswordMinimumLength(in ComponentName who, int userHandle, boolean parent);
55
56    void setPasswordMinimumUpperCase(in ComponentName who, int length, boolean parent);
57    int getPasswordMinimumUpperCase(in ComponentName who, int userHandle, boolean parent);
58
59    void setPasswordMinimumLowerCase(in ComponentName who, int length, boolean parent);
60    int getPasswordMinimumLowerCase(in ComponentName who, int userHandle, boolean parent);
61
62    void setPasswordMinimumLetters(in ComponentName who, int length, boolean parent);
63    int getPasswordMinimumLetters(in ComponentName who, int userHandle, boolean parent);
64
65    void setPasswordMinimumNumeric(in ComponentName who, int length, boolean parent);
66    int getPasswordMinimumNumeric(in ComponentName who, int userHandle, boolean parent);
67
68    void setPasswordMinimumSymbols(in ComponentName who, int length, boolean parent);
69    int getPasswordMinimumSymbols(in ComponentName who, int userHandle, boolean parent);
70
71    void setPasswordMinimumNonLetter(in ComponentName who, int length, boolean parent);
72    int getPasswordMinimumNonLetter(in ComponentName who, int userHandle, boolean parent);
73
74    void setPasswordHistoryLength(in ComponentName who, int length, boolean parent);
75    int getPasswordHistoryLength(in ComponentName who, int userHandle, boolean parent);
76
77    void setPasswordExpirationTimeout(in ComponentName who, long expiration, boolean parent);
78    long getPasswordExpirationTimeout(in ComponentName who, int userHandle, boolean parent);
79
80    long getPasswordExpiration(in ComponentName who, int userHandle, boolean parent);
81
82    boolean setPasswordBlacklist(in ComponentName who, String name, in List<String> blacklist, boolean parent);
83    String getPasswordBlacklistName(in ComponentName who, int userId, boolean parent);
84    boolean isPasswordBlacklisted(int userId, String password);
85
86    boolean isActivePasswordSufficient(int userHandle, boolean parent);
87    boolean isProfileActivePasswordSufficientForParent(int userHandle);
88    boolean isUsingUnifiedPassword(in ComponentName admin);
89    int getCurrentFailedPasswordAttempts(int userHandle, boolean parent);
90    int getProfileWithMinimumFailedPasswordsForWipe(int userHandle, boolean parent);
91
92    void setMaximumFailedPasswordsForWipe(in ComponentName admin, int num, boolean parent);
93    int getMaximumFailedPasswordsForWipe(in ComponentName admin, int userHandle, boolean parent);
94
95    boolean resetPassword(String password, int flags);
96
97    void setMaximumTimeToLock(in ComponentName who, long timeMs, boolean parent);
98    long getMaximumTimeToLock(in ComponentName who, int userHandle, boolean parent);
99
100    void setRequiredStrongAuthTimeout(in ComponentName who, long timeMs, boolean parent);
101    long getRequiredStrongAuthTimeout(in ComponentName who, int userId, boolean parent);
102
103    void lockNow(int flags, boolean parent);
104
105    void wipeDataWithReason(int flags, String wipeReasonForUser);
106
107    ComponentName setGlobalProxy(in ComponentName admin, String proxySpec, String exclusionList);
108    ComponentName getGlobalProxyAdmin(int userHandle);
109    void setRecommendedGlobalProxy(in ComponentName admin, in ProxyInfo proxyInfo);
110
111    int setStorageEncryption(in ComponentName who, boolean encrypt);
112    boolean getStorageEncryption(in ComponentName who, int userHandle);
113    int getStorageEncryptionStatus(in String callerPackage, int userHandle);
114
115    boolean requestBugreport(in ComponentName who);
116
117    void setCameraDisabled(in ComponentName who, boolean disabled);
118    boolean getCameraDisabled(in ComponentName who, int userHandle);
119
120    void setScreenCaptureDisabled(in ComponentName who, boolean disabled);
121    boolean getScreenCaptureDisabled(in ComponentName who, int userHandle);
122
123    void setKeyguardDisabledFeatures(in ComponentName who, int which, boolean parent);
124    int getKeyguardDisabledFeatures(in ComponentName who, int userHandle, boolean parent);
125
126    void setActiveAdmin(in ComponentName policyReceiver, boolean refreshing, int userHandle);
127    boolean isAdminActive(in ComponentName policyReceiver, int userHandle);
128    List<ComponentName> getActiveAdmins(int userHandle);
129    boolean packageHasActiveAdmins(String packageName, int userHandle);
130    void getRemoveWarning(in ComponentName policyReceiver, in RemoteCallback result, int userHandle);
131    void removeActiveAdmin(in ComponentName policyReceiver, int userHandle);
132    void forceRemoveActiveAdmin(in ComponentName policyReceiver, int userHandle);
133    boolean hasGrantedPolicy(in ComponentName policyReceiver, int usesPolicy, int userHandle);
134
135    void setActivePasswordState(in PasswordMetrics metrics, int userHandle);
136    void reportPasswordChanged(int userId);
137    void reportFailedPasswordAttempt(int userHandle);
138    void reportSuccessfulPasswordAttempt(int userHandle);
139    void reportFailedFingerprintAttempt(int userHandle);
140    void reportSuccessfulFingerprintAttempt(int userHandle);
141    void reportKeyguardDismissed(int userHandle);
142    void reportKeyguardSecured(int userHandle);
143
144    boolean setDeviceOwner(in ComponentName who, String ownerName, int userId);
145    ComponentName getDeviceOwnerComponent(boolean callingUserOnly);
146    boolean hasDeviceOwner();
147    String getDeviceOwnerName();
148    void clearDeviceOwner(String packageName);
149    int getDeviceOwnerUserId();
150
151    boolean setProfileOwner(in ComponentName who, String ownerName, int userHandle);
152    ComponentName getProfileOwner(int userHandle);
153    String getProfileOwnerName(int userHandle);
154    void setProfileEnabled(in ComponentName who);
155    void setProfileName(in ComponentName who, String profileName);
156    void clearProfileOwner(in ComponentName who);
157    boolean hasUserSetupCompleted();
158
159    void setDeviceOwnerLockScreenInfo(in ComponentName who, CharSequence deviceOwnerInfo);
160    CharSequence getDeviceOwnerLockScreenInfo();
161
162    String[] setPackagesSuspended(in ComponentName admin, in String callerPackage, in String[] packageNames, boolean suspended);
163    boolean isPackageSuspended(in ComponentName admin, in String callerPackage, String packageName);
164
165    boolean installCaCert(in ComponentName admin, String callerPackage, in byte[] certBuffer);
166    void uninstallCaCerts(in ComponentName admin, String callerPackage, in String[] aliases);
167    void enforceCanManageCaCerts(in ComponentName admin, in String callerPackage);
168    boolean approveCaCert(in String alias, int userHandle, boolean approval);
169    boolean isCaCertApproved(in String alias, int userHandle);
170
171    boolean installKeyPair(in ComponentName who, in String callerPackage, in byte[] privKeyBuffer,
172            in byte[] certBuffer, in byte[] certChainBuffer, String alias, boolean requestAccess,
173            boolean isUserSelectable);
174    boolean removeKeyPair(in ComponentName who, in String callerPackage, String alias);
175    boolean generateKeyPair(in ComponentName who, in String callerPackage, in String algorithm,
176            in ParcelableKeyGenParameterSpec keySpec,
177            in int idAttestationFlags, out KeymasterCertificateChain attestationChain);
178    boolean setKeyPairCertificate(in ComponentName who, in String callerPackage, in String alias,
179            in byte[] certBuffer, in byte[] certChainBuffer, boolean isUserSelectable);
180    void choosePrivateKeyAlias(int uid, in Uri uri, in String alias, IBinder aliasCallback);
181
182    void setDelegatedScopes(in ComponentName who, in String delegatePackage, in List<String> scopes);
183    List<String> getDelegatedScopes(in ComponentName who, String delegatePackage);
184    List<String> getDelegatePackages(in ComponentName who, String scope);
185
186    void setCertInstallerPackage(in ComponentName who, String installerPackage);
187    String getCertInstallerPackage(in ComponentName who);
188
189    boolean setAlwaysOnVpnPackage(in ComponentName who, String vpnPackage, boolean lockdown);
190    String getAlwaysOnVpnPackage(in ComponentName who);
191
192    void addPersistentPreferredActivity(in ComponentName admin, in IntentFilter filter, in ComponentName activity);
193    void clearPackagePersistentPreferredActivities(in ComponentName admin, String packageName);
194
195    void setDefaultSmsApplication(in ComponentName admin, String packageName);
196
197    void setApplicationRestrictions(in ComponentName who, in String callerPackage, in String packageName, in Bundle settings);
198    Bundle getApplicationRestrictions(in ComponentName who, in String callerPackage, in String packageName);
199    boolean setApplicationRestrictionsManagingPackage(in ComponentName admin, in String packageName);
200    String getApplicationRestrictionsManagingPackage(in ComponentName admin);
201    boolean isCallerApplicationRestrictionsManagingPackage(in String callerPackage);
202
203    void setRestrictionsProvider(in ComponentName who, in ComponentName provider);
204    ComponentName getRestrictionsProvider(int userHandle);
205
206    void setUserRestriction(in ComponentName who, in String key, boolean enable);
207    Bundle getUserRestrictions(in ComponentName who);
208    void addCrossProfileIntentFilter(in ComponentName admin, in IntentFilter filter, int flags);
209    void clearCrossProfileIntentFilters(in ComponentName admin);
210
211    boolean setPermittedAccessibilityServices(in ComponentName admin,in List packageList);
212    List getPermittedAccessibilityServices(in ComponentName admin);
213    List getPermittedAccessibilityServicesForUser(int userId);
214    boolean isAccessibilityServicePermittedByAdmin(in ComponentName admin, String packageName, int userId);
215
216    boolean setPermittedInputMethods(in ComponentName admin,in List packageList);
217    List getPermittedInputMethods(in ComponentName admin);
218    List getPermittedInputMethodsForCurrentUser();
219    boolean isInputMethodPermittedByAdmin(in ComponentName admin, String packageName, int userId);
220
221    boolean setPermittedCrossProfileNotificationListeners(in ComponentName admin, in List<String> packageList);
222    List<String> getPermittedCrossProfileNotificationListeners(in ComponentName admin);
223    boolean isNotificationListenerServicePermitted(in String packageName, int userId);
224
225    Intent createAdminSupportIntent(in String restriction);
226    boolean setApplicationHidden(in ComponentName admin, in String callerPackage, in String packageName, boolean hidden);
227    boolean isApplicationHidden(in ComponentName admin, in String callerPackage, in String packageName);
228
229    UserHandle createAndManageUser(in ComponentName who, in String name, in ComponentName profileOwner, in PersistableBundle adminExtras, in int flags);
230    boolean removeUser(in ComponentName who, in UserHandle userHandle);
231    boolean switchUser(in ComponentName who, in UserHandle userHandle);
232    int startUserInBackground(in ComponentName who, in UserHandle userHandle);
233    int stopUser(in ComponentName who, in UserHandle userHandle);
234    int logoutUser(in ComponentName who);
235    List<UserHandle> getSecondaryUsers(in ComponentName who);
236
237    void enableSystemApp(in ComponentName admin, in String callerPackage, in String packageName);
238    int enableSystemAppWithIntent(in ComponentName admin, in String callerPackage, in Intent intent);
239    boolean installExistingPackage(in ComponentName admin, in String callerPackage, in String packageName);
240
241    void setAccountManagementDisabled(in ComponentName who, in String accountType, in boolean disabled);
242    String[] getAccountTypesWithManagementDisabled();
243    String[] getAccountTypesWithManagementDisabledAsUser(int userId);
244
245    void setLockTaskPackages(in ComponentName who, in String[] packages);
246    String[] getLockTaskPackages(in ComponentName who);
247    boolean isLockTaskPermitted(in String pkg);
248
249    void setLockTaskFeatures(in ComponentName who, int flags);
250    int getLockTaskFeatures(in ComponentName who);
251
252    void setGlobalSetting(in ComponentName who, in String setting, in String value);
253    void setSystemSetting(in ComponentName who, in String setting, in String value);
254    void setSecureSetting(in ComponentName who, in String setting, in String value);
255
256    boolean setTime(in ComponentName who, long millis);
257    boolean setTimeZone(in ComponentName who, String timeZone);
258
259    void setMasterVolumeMuted(in ComponentName admin, boolean on);
260    boolean isMasterVolumeMuted(in ComponentName admin);
261
262    void notifyLockTaskModeChanged(boolean isEnabled, String pkg, int userId);
263
264    void setUninstallBlocked(in ComponentName admin, in String callerPackage, in String packageName, boolean uninstallBlocked);
265    boolean isUninstallBlocked(in ComponentName admin, in String packageName);
266
267    void setCrossProfileCallerIdDisabled(in ComponentName who, boolean disabled);
268    boolean getCrossProfileCallerIdDisabled(in ComponentName who);
269    boolean getCrossProfileCallerIdDisabledForUser(int userId);
270    void setCrossProfileContactsSearchDisabled(in ComponentName who, boolean disabled);
271    boolean getCrossProfileContactsSearchDisabled(in ComponentName who);
272    boolean getCrossProfileContactsSearchDisabledForUser(int userId);
273    void startManagedQuickContact(String lookupKey, long contactId, boolean isContactIdIgnored, long directoryId, in Intent originalIntent);
274
275    void setBluetoothContactSharingDisabled(in ComponentName who, boolean disabled);
276    boolean getBluetoothContactSharingDisabled(in ComponentName who);
277    boolean getBluetoothContactSharingDisabledForUser(int userId);
278
279    void setTrustAgentConfiguration(in ComponentName admin, in ComponentName agent,
280            in PersistableBundle args, boolean parent);
281    List<PersistableBundle> getTrustAgentConfiguration(in ComponentName admin,
282            in ComponentName agent, int userId, boolean parent);
283
284    boolean addCrossProfileWidgetProvider(in ComponentName admin, String packageName);
285    boolean removeCrossProfileWidgetProvider(in ComponentName admin, String packageName);
286    List<String> getCrossProfileWidgetProviders(in ComponentName admin);
287
288    void setAutoTimeRequired(in ComponentName who, boolean required);
289    boolean getAutoTimeRequired();
290
291    void setForceEphemeralUsers(in ComponentName who, boolean forceEpehemeralUsers);
292    boolean getForceEphemeralUsers(in ComponentName who);
293
294    boolean isRemovingAdmin(in ComponentName adminReceiver, int userHandle);
295
296    void setUserIcon(in ComponentName admin, in Bitmap icon);
297
298    void setSystemUpdatePolicy(in ComponentName who, in SystemUpdatePolicy policy);
299    SystemUpdatePolicy getSystemUpdatePolicy();
300    void clearSystemUpdatePolicyFreezePeriodRecord();
301
302    boolean setKeyguardDisabled(in ComponentName admin, boolean disabled);
303    boolean setStatusBarDisabled(in ComponentName who, boolean disabled);
304    boolean getDoNotAskCredentialsOnBoot();
305
306    void notifyPendingSystemUpdate(in SystemUpdateInfo info);
307    SystemUpdateInfo getPendingSystemUpdate(in ComponentName admin);
308
309    void setPermissionPolicy(in ComponentName admin, in String callerPackage, int policy);
310    int  getPermissionPolicy(in ComponentName admin);
311    boolean setPermissionGrantState(in ComponentName admin, in String callerPackage, String packageName,
312            String permission, int grantState);
313    int getPermissionGrantState(in ComponentName admin, in String callerPackage, String packageName, String permission);
314    boolean isProvisioningAllowed(String action, String packageName);
315    int checkProvisioningPreCondition(String action, String packageName);
316    void setKeepUninstalledPackages(in ComponentName admin, in String callerPackage, in List<String> packageList);
317    List<String> getKeepUninstalledPackages(in ComponentName admin, in String callerPackage);
318    boolean isManagedProfile(in ComponentName admin);
319    boolean isSystemOnlyUser(in ComponentName admin);
320    String getWifiMacAddress(in ComponentName admin);
321    void reboot(in ComponentName admin);
322
323    void setShortSupportMessage(in ComponentName admin, in CharSequence message);
324    CharSequence getShortSupportMessage(in ComponentName admin);
325    void setLongSupportMessage(in ComponentName admin, in CharSequence message);
326    CharSequence getLongSupportMessage(in ComponentName admin);
327
328    CharSequence getShortSupportMessageForUser(in ComponentName admin, int userHandle);
329    CharSequence getLongSupportMessageForUser(in ComponentName admin, int userHandle);
330
331    boolean isSeparateProfileChallengeAllowed(int userHandle);
332
333    void setOrganizationColor(in ComponentName admin, in int color);
334    void setOrganizationColorForUser(in int color, in int userId);
335    int getOrganizationColor(in ComponentName admin);
336    int getOrganizationColorForUser(int userHandle);
337
338    void setOrganizationName(in ComponentName admin, in CharSequence title);
339    CharSequence getOrganizationName(in ComponentName admin);
340    CharSequence getDeviceOwnerOrganizationName();
341    CharSequence getOrganizationNameForUser(int userHandle);
342
343    int getUserProvisioningState();
344    void setUserProvisioningState(int state, int userHandle);
345
346    void setAffiliationIds(in ComponentName admin, in List<String> ids);
347    List<String> getAffiliationIds(in ComponentName admin);
348    boolean isAffiliatedUser();
349
350    void setSecurityLoggingEnabled(in ComponentName admin, boolean enabled);
351    boolean isSecurityLoggingEnabled(in ComponentName admin);
352    ParceledListSlice retrieveSecurityLogs(in ComponentName admin);
353    ParceledListSlice retrievePreRebootSecurityLogs(in ComponentName admin);
354    long forceSecurityLogs();
355
356    boolean isUninstallInQueue(String packageName);
357    void uninstallPackageWithActiveAdmins(String packageName);
358
359    boolean isDeviceProvisioned();
360    boolean isDeviceProvisioningConfigApplied();
361    void setDeviceProvisioningConfigApplied();
362
363    void forceUpdateUserSetupComplete();
364
365    void setBackupServiceEnabled(in ComponentName admin, boolean enabled);
366    boolean isBackupServiceEnabled(in ComponentName admin);
367    boolean setMandatoryBackupTransport(in ComponentName admin, in ComponentName backupTransportComponent);
368    ComponentName getMandatoryBackupTransport();
369
370    void setNetworkLoggingEnabled(in ComponentName admin, boolean enabled);
371    boolean isNetworkLoggingEnabled(in ComponentName admin);
372    List<NetworkEvent> retrieveNetworkLogs(in ComponentName admin, long batchToken);
373
374    boolean bindDeviceAdminServiceAsUser(in ComponentName admin,
375        IApplicationThread caller, IBinder token, in Intent service,
376        IServiceConnection connection, int flags, int targetUserId);
377    List<UserHandle> getBindDeviceAdminTargetUsers(in ComponentName admin);
378    boolean isEphemeralUser(in ComponentName admin);
379
380    long getLastSecurityLogRetrievalTime();
381    long getLastBugReportRequestTime();
382    long getLastNetworkLogRetrievalTime();
383
384    boolean setResetPasswordToken(in ComponentName admin, in byte[] token);
385    boolean clearResetPasswordToken(in ComponentName admin);
386    boolean isResetPasswordTokenActive(in ComponentName admin);
387    boolean resetPasswordWithToken(in ComponentName admin, String password, in byte[] token, int flags);
388
389    boolean isCurrentInputMethodSetByOwner();
390    StringParceledListSlice getOwnerInstalledCaCerts(in UserHandle user);
391
392    void clearApplicationUserData(in ComponentName admin, in String packageName, in IPackageDataObserver callback);
393
394    void setLogoutEnabled(in ComponentName admin, boolean enabled);
395    boolean isLogoutEnabled();
396
397    List<String> getDisallowedSystemApps(in ComponentName admin, int userId, String provisioningAction);
398
399    void transferOwnership(in ComponentName admin, in ComponentName target, in PersistableBundle bundle);
400    PersistableBundle getTransferOwnershipBundle();
401
402    void setStartUserSessionMessage(in ComponentName admin, in CharSequence startUserSessionMessage);
403    void setEndUserSessionMessage(in ComponentName admin, in CharSequence endUserSessionMessage);
404    CharSequence getStartUserSessionMessage(in ComponentName admin);
405    CharSequence getEndUserSessionMessage(in ComponentName admin);
406
407    List<String> setMeteredDataDisabled(in ComponentName admin, in List<String> packageNames);
408    List<String> getMeteredDataDisabled(in ComponentName admin);
409
410    int addOverrideApn(in ComponentName admin, in ApnSetting apnSetting);
411    boolean updateOverrideApn(in ComponentName admin, int apnId, in ApnSetting apnSetting);
412    boolean removeOverrideApn(in ComponentName admin, int apnId);
413    List<ApnSetting> getOverrideApns(in ComponentName admin);
414    void setOverrideApnsEnabled(in ComponentName admin, boolean enabled);
415    boolean isOverrideApnEnabled(in ComponentName admin);
416
417    boolean isMeteredDataDisabledForUser(in ComponentName admin, String packageName, int userId);
418}
419