19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Copyright 2007, The Android Open Source Project
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** you may not use this file except in compliance with the License.
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** You may obtain a copy of the License at
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**     http://www.apache.org/licenses/LICENSE-2.0
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Unless required by applicable law or agreed to in writing, software
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS,
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** See the License for the specific language governing permissions and
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** limitations under the License.
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.content.pm;
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ComponentName;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.IntentFilter;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ActivityInfo;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ApplicationInfo;
25ceb1b0bfaea56251796b08c07b963de7403d84ebAnonymous Cowardimport android.content.pm.ContainerEncryptionParams;
262acf063da08dfff69f184c9a6a90a7a5fe60d818Svet Ganovimport android.content.pm.EphemeralApplicationInfo;
2749237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackbornimport android.content.pm.FeatureInfo;
28f1977b4500e82b72ea6aa5c46d97406a20017cafChristopher Tateimport android.content.pm.IPackageInstallObserver2;
293a44f3f1b446315ef894e01d2ab9b5388c2bd8c4Jeff Sharkeyimport android.content.pm.IPackageInstaller;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.IPackageDeleteObserver;
31fbd0e9fa37fc17ccd25e4c1f16195bbd27de3c4cJeff Sharkeyimport android.content.pm.IPackageDeleteObserver2;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.IPackageDataObserver;
338946dd3355fc1dcbad872c0546e356474d4cc5deSuchi Amalapurapuimport android.content.pm.IPackageMoveObserver;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.IPackageStatsObserver;
35f7c06eb03ab4479b9d0656a23a4733d17e995183Svetoslavimport android.content.pm.IOnPermissionsChangeListener;
361c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport android.content.pm.IntentFilterVerificationInfo;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.InstrumentationInfo;
38c6f22499f3046684d7175e10ca42cce1492cd36fdcashmanimport android.content.pm.KeySet;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.PackageInfo;
405ab2157bf1f105b02d3e2913cd3a33f9765b74caKenny Rootimport android.content.pm.ManifestDigest;
417767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackbornimport android.content.pm.PackageCleanItem;
420e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Rootimport android.content.pm.ParceledListSlice;
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ProviderInfo;
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.PermissionGroupInfo;
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.PermissionInfo;
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ResolveInfo;
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ServiceInfo;
480b285499db739ba50f2f839d633e763c70e67f96Amith Yamasaniimport android.content.pm.UserInfo;
490aaa0d931716e9f57a1d84d795fab2df75092756Kenny Rootimport android.content.pm.VerifierDeviceIdentity;
502acf063da08dfff69f184c9a6a90a7a5fe60d818Svet Ganovimport android.graphics.Bitmap;
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri;
52c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslavimport android.os.Bundle;
53b8151ecd6ef4faa5c16d0a4c3abb45ec84d1f97aAmith Yamasaniimport android.os.ParcelFileDescriptor;
541ccac75e1f1b97eccb916a8de04fc1012b30f6e5Suchi Amalapurapuimport android.content.IntentSender;
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  See {@link PackageManager} for documentation on most of the APIs
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  here.
59c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav *
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  {@hide}
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface IPackageManager {
638924e8759f9a8cffb5ad538ca40a7826793aac07Jeff Sharkey    void checkPackageStartable(String packageName, int userId);
64ba629da331d01d74067afdda5d4255682d4b24d7Christopher Tate    boolean isPackageAvailable(String packageName, int userId);
65483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    PackageInfo getPackageInfo(String packageName, int flags, int userId);
66cd65448ccd13c4c2d0fe9e9623fec3a898ab9372Jeff Sharkey    int getPackageUid(String packageName, int flags, int userId);
67cd65448ccd13c4c2d0fe9e9623fec3a898ab9372Jeff Sharkey    int[] getPackageGids(String packageName, int flags, int userId);
68c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
69470969346d7958f859d97d1a136b4ecc11e2a464Dianne Hackborn    String[] currentToCanonicalPackageNames(in String[] names);
70470969346d7958f859d97d1a136b4ecc11e2a464Dianne Hackborn    String[] canonicalToCurrentPackageNames(in String[] names);
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    PermissionInfo getPermissionInfo(String name, int flags);
73c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
74d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice queryPermissionsByGroup(String group, int flags);
75c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    PermissionGroupInfo getPermissionGroupInfo(String name, int flags);
77c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
78d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice getAllPermissionGroups(int flags);
79c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
80483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    ApplicationInfo getApplicationInfo(String packageName, int flags ,int userId);
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
82483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    ActivityInfo getActivityInfo(in ComponentName className, int flags, int userId);
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8491097de49b0f683b00e26a75dbc0ac6082344137Dianne Hackborn    boolean activitySupportsIntent(in ComponentName className, in Intent intent,
8591097de49b0f683b00e26a75dbc0ac6082344137Dianne Hackborn            String resolvedType);
8691097de49b0f683b00e26a75dbc0ac6082344137Dianne Hackborn
87483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    ActivityInfo getReceiverInfo(in ComponentName className, int flags, int userId);
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
89483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    ServiceInfo getServiceInfo(in ComponentName className, int flags, int userId);
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
91483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    ProviderInfo getProviderInfo(in ComponentName className, int flags, int userId);
92361199b5e742c6635d4d7a03de6cf37b31cf442cDianne Hackborn
93c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav    int checkPermission(String permName, String pkgName, int userId);
94c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int checkUidPermission(String permName, int uid);
96c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean addPermission(in PermissionInfo info);
98c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void removePermission(String name);
100e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn
1018c7f700a59ad26e75c9791335d78f14322cad49aSvet Ganov    void grantRuntimePermission(String packageName, String permissionName, int userId);
102e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn
1038c7f700a59ad26e75c9791335d78f14322cad49aSvet Ganov    void revokeRuntimePermission(String packageName, String permissionName, int userId);
1048c7f700a59ad26e75c9791335d78f14322cad49aSvet Ganov
105ca8e6da41c6e63e3ed17eb461171f1ef2e1d29c6Dianne Hackborn    void resetRuntimePermissions();
106ca8e6da41c6e63e3ed17eb461171f1ef2e1d29c6Dianne Hackborn
1078c7f700a59ad26e75c9791335d78f14322cad49aSvet Ganov    int getPermissionFlags(String permissionName, String packageName, int userId);
1088c7f700a59ad26e75c9791335d78f14322cad49aSvet Ganov
1098c7f700a59ad26e75c9791335d78f14322cad49aSvet Ganov    void updatePermissionFlags(String permissionName, String packageName, int flagMask,
1108c7f700a59ad26e75c9791335d78f14322cad49aSvet Ganov            int flagValues, int userId);
111e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn
1120bf8f7cc3982164a9e11ea4a25ed930e466f1dd8Amith Yamasani    void updatePermissionFlagsForAllApps(int flagMask, int flagValues, int userId);
1130bf8f7cc3982164a9e11ea4a25ed930e466f1dd8Amith Yamasani
11420770ddbd4d6f2af0093f36462a8f44a678b084bSvetoslav    boolean shouldShowRequestPermissionRationale(String permissionName,
11520770ddbd4d6f2af0093f36462a8f44a678b084bSvetoslav            String packageName, int userId);
11620770ddbd4d6f2af0093f36462a8f44a678b084bSvetoslav
117854060af30f928c0a65591e9c8314ae17056e6b8Dianne Hackborn    boolean isProtectedBroadcast(String actionName);
118c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int checkSignatures(String pkg1, String pkg2);
120c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
121766cbfe44be3c5013a6a22bd6cd8ad1055a37256Dianne Hackborn    int checkUidSignatures(int uid1, int uid2);
122c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
123990fb6b5c91be62078a698ee1c01e24d33364c85David Brazdil    List<String> getAllPackages();
124990fb6b5c91be62078a698ee1c01e24d33364c85David Brazdil
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String[] getPackagesForUid(int uid);
126c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getNameForUid(int uid);
128c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getUidForSharedUser(String sharedUserName);
130dd72c9ed558158f889a8cdfed8a108553ba5a562Ben Gruver
131dd72c9ed558158f889a8cdfed8a108553ba5a562Ben Gruver    int getFlagsForUid(int uid);
132dd72c9ed558158f889a8cdfed8a108553ba5a562Ben Gruver
133b9f8a5204a1b0b3919fa921e858d04124c582828Alex Klyubin    int getPrivateFlagsForUid(int uid);
134b9f8a5204a1b0b3919fa921e858d04124c582828Alex Klyubin
1352d7576b082b84068fb9d68419b710b9bec49139bDianne Hackborn    boolean isUidPrivileged(int uid);
1362d7576b082b84068fb9d68419b710b9bec49139bDianne Hackborn
13733f5ddd1bea21296938f2cba196f95d223aa247cDianne Hackborn    String[] getAppOpPermissionPackages(String permissionName);
13833f5ddd1bea21296938f2cba196f95d223aa247cDianne Hackborn
139483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    ResolveInfo resolveIntent(in Intent intent, String resolvedType, int flags, int userId);
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1418194899071e0a84c95ef10614bd1b9485b48f589Nicolas Prevot    boolean canForwardTo(in Intent intent, String resolvedType, int sourceUserId, int targetUserId);
14210fa67c77e11699391e27975fc2d276a0b8c7cbbNicolas Prevot
143d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice queryIntentActivities(in Intent intent,
144483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani            String resolvedType, int flags, int userId);
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
146d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice queryIntentActivityOptions(
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            in ComponentName caller, in Intent[] specifics,
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            in String[] specificTypes, in Intent intent,
149483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani            String resolvedType, int flags, int userId);
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
151d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice queryIntentReceivers(in Intent intent,
152483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani            String resolvedType, int flags, int userId);
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    ResolveInfo resolveService(in Intent intent,
155483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani            String resolvedType, int flags, int userId);
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
157d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice queryIntentServices(in Intent intent,
158483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani            String resolvedType, int flags, int userId);
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
160d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice queryIntentContentProviders(in Intent intent,
16185f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey            String resolvedType, int flags, int userId);
16285f5f8132015d8a5043ea4413702420d0d157c9fJeff Sharkey
1630e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root    /**
1640e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root     * This implements getInstalledPackages via a "last returned row"
1650e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root     * mechanism that is not exposed in the API. This is to get around the IPC
1660e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root     * limit that kicks in when flags are included that bloat up the data
1670e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root     * returned.
1680e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root     */
169d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn    ParceledListSlice getInstalledPackages(int flags, in int userId);
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1710e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root    /**
172e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn     * This implements getPackagesHoldingPermissions via a "last returned row"
173e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn     * mechanism that is not exposed in the API. This is to get around the IPC
174e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn     * limit that kicks in when flags are included that bloat up the data
175e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn     * returned.
176e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn     */
177e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn    ParceledListSlice getPackagesHoldingPermissions(in String[] permissions,
178d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn            int flags, int userId);
179e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn
180e799175b6ba3aadd972f4b861758d675d1f93987Dianne Hackborn    /**
1810e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root     * This implements getInstalledApplications via a "last returned row"
1820e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root     * mechanism that is not exposed in the API. This is to get around the IPC
1830e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root     * limit that kicks in when flags are included that bloat up the data
1840e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root     * returned.
1850e2c0f37d98bb5539b0fe41865aaf1add0ff1bb3Kenny Root     */
186d8e1dbb6bc1fbaf4f2e38c3ba92ced94270deaacDianne Hackborn    ParceledListSlice getInstalledApplications(int flags, int userId);
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve all applications that are marked as persistent.
190c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav     *
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return A List&lt;applicationInfo> containing one entry for each persistent
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         application.
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
194d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice getPersistentApplications(int flags);
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
196483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    ProviderInfo resolveContentProvider(String name, int flags, int userId);
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve sync information for all content providers.
200c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav     *
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param outNames Filled in with a list of the root names of the content
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                 providers that can sync.
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param outInfo Filled in with a list of the ProviderInfo for each
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                name in 'outNames'.
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void querySyncProviders(inout List<String> outNames,
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            inout List<ProviderInfo> outInfo);
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
20928ec27cbfa157c242fd9330a10c7c2b8ea838694Dianne Hackborn    ParceledListSlice queryContentProviders(
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String processName, int uid, int flags);
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    InstrumentationInfo getInstrumentationInfo(
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            in ComponentName className, int flags);
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
215d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice queryInstrumentation(
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String targetPackage, int flags);
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
218a67932374dbbfbe4c6440d223fc7922b313dd957Todd Kennedy    /** @deprecated Use PackageInstaller instead */
219dda003ffa84f986bfaba4344124eafa533f5039dAmith Yamasani    void installPackageAsUser(in String originPath,
220dda003ffa84f986bfaba4344124eafa533f5039dAmith Yamasani            in IPackageInstallObserver2 observer,
221dda003ffa84f986bfaba4344124eafa533f5039dAmith Yamasani            int flags,
222dda003ffa84f986bfaba4344124eafa533f5039dAmith Yamasani            in String installerPackageName,
223dda003ffa84f986bfaba4344124eafa533f5039dAmith Yamasani            int userId);
224dda003ffa84f986bfaba4344124eafa533f5039dAmith Yamasani
2255cf5578a457e448dda9fd47943e91f0f3b67690fChristopher Tate    void finishPackageInstall(int token, boolean didLaunch);
2261bb6906c7a903ee6427c8ff37bdc5896c386ff73Christopher Tate
227880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn    void setInstallerPackageName(in String targetPackage, in String installerPackageName);
228880119bf43d738ca632b5d3861eb52d655c1c0fcDianne Hackborn
229fbd0e9fa37fc17ccd25e4c1f16195bbd27de3c4cJeff Sharkey    /** @deprecated rawr, don't call AIDL methods directly! */
230fbd0e9fa37fc17ccd25e4c1f16195bbd27de3c4cJeff Sharkey    void deletePackageAsUser(in String packageName, IPackageDeleteObserver observer,
231fbd0e9fa37fc17ccd25e4c1f16195bbd27de3c4cJeff Sharkey            int userId, int flags);
232fbd0e9fa37fc17ccd25e4c1f16195bbd27de3c4cJeff Sharkey
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
23467df64b3a48a8157d08a98fa90135d0ac0ee621cAmith Yamasani     * Delete a package for a specific user.
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param packageName The fully qualified name of the package to delete.
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer a callback to use to notify when the package deletion in finished.
23867df64b3a48a8157d08a98fa90135d0ac0ee621cAmith Yamasani     * @param userId the id of the user for whom to delete the package
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param flags - possible values: {@link #DONT_DELETE_DATA}
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
241fbd0e9fa37fc17ccd25e4c1f16195bbd27de3c4cJeff Sharkey    void deletePackage(in String packageName, IPackageDeleteObserver2 observer, int userId, int flags);
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
24365e13171e12cb9e9fc2f608d0c8a92cd3c098648Jacek Surazski    String getInstallerPackageName(in String packageName);
24465e13171e12cb9e9fc2f608d0c8a92cd3c098648Jacek Surazski
2459c8b8ab941e3ca7bdf2cccad6836760d7723518eSvet Ganov    void resetApplicationPreferences(int userId);
2468a2ed1d7c0c4f6476e39cc37d9ebd29c7562ce01Dianne Hackborn
247e9ecc8b49992840249bfb9d5d52b8824dd5de39bAmith Yamasani    ResolveInfo getLastChosenActivity(in Intent intent,
248e9ecc8b49992840249bfb9d5d52b8824dd5de39bAmith Yamasani            String resolvedType, int flags);
249e9ecc8b49992840249bfb9d5d52b8824dd5de39bAmith Yamasani
250e9ecc8b49992840249bfb9d5d52b8824dd5de39bAmith Yamasani    void setLastChosenActivity(in Intent intent, String resolvedType, int flags,
251e9ecc8b49992840249bfb9d5d52b8824dd5de39bAmith Yamasani            in IntentFilter filter, int match, in ComponentName activity);
252e9ecc8b49992840249bfb9d5d52b8824dd5de39bAmith Yamasani
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void addPreferredActivity(in IntentFilter filter, int match,
254a3f133afe885f9e005dfc0584cb7b3b90f75f665Amith Yamasani            in ComponentName[] set, in ComponentName activity, int userId);
2558dbe612dc60526d635e57257b58627b33a099678Satish Sampath
2568dbe612dc60526d635e57257b58627b33a099678Satish Sampath    void replacePreferredActivity(in IntentFilter filter, int match,
25741c1ded7f042a4cf303479550b38fa66d7a18906Amith Yamasani            in ComponentName[] set, in ComponentName activity, int userId);
2588dbe612dc60526d635e57257b58627b33a099678Satish Sampath
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void clearPackagePreferredActivities(String packageName);
2608dbe612dc60526d635e57257b58627b33a099678Satish Sampath
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getPreferredActivities(out List<IntentFilter> outFilters,
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            out List<ComponentName> outActivities, String packageName);
263e9ecc8b49992840249bfb9d5d52b8824dd5de39bAmith Yamasani
264f475ca33d9232785710aaa438f17915029dfa83bSander Alewijnse    void addPersistentPreferredActivity(in IntentFilter filter, in ComponentName activity, int userId);
265f475ca33d9232785710aaa438f17915029dfa83bSander Alewijnse
266f475ca33d9232785710aaa438f17915029dfa83bSander Alewijnse    void clearPackagePersistentPreferredActivities(String packageName, int userId);
267f475ca33d9232785710aaa438f17915029dfa83bSander Alewijnse
2683f7777fa4f1d392e18bad39edcd4539880c52ff9Nicolas Prevot    void addCrossProfileIntentFilter(in IntentFilter intentFilter, String ownerPackage,
2694b8d5821512c6a4fdaf442f6d48e1dc412539136Nicolas Prevot            int sourceUserId, int targetUserId, int flags);
27010fa67c77e11699391e27975fc2d276a0b8c7cbbNicolas Prevot
2714b8d5821512c6a4fdaf442f6d48e1dc412539136Nicolas Prevot    void clearCrossProfileIntentFilters(int sourceUserId, String ownerPackage);
27210fa67c77e11699391e27975fc2d276a0b8c7cbbNicolas Prevot
273eb84b1843a3f6805c6109c1d9d023550229a3fc5Andrei Stingaceanu    String[] setPackagesSuspendedAsUser(in String[] packageNames, boolean suspended, int userId);
274355b232d7998cfc9b29d42a0356390e25191bcbdAndrei Stingaceanu    boolean isPackageSuspendedForUser(String packageName, int userId);
2751e2839188fb49575b86646d3aadb355c81ef9cc5Andrei Stingaceanu
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
277e012a235569fe307d165dfd0784ae847d0b13739Christopher Tate     * Backup/restore support - only the system uid may use these.
278e012a235569fe307d165dfd0784ae847d0b13739Christopher Tate     */
279e012a235569fe307d165dfd0784ae847d0b13739Christopher Tate    byte[] getPreferredActivityBackup(int userId);
280e012a235569fe307d165dfd0784ae847d0b13739Christopher Tate    void restorePreferredActivities(in byte[] backup, int userId);
2816038d15cbc7f4648ceaadf5f15d1928c4899f98eChristopher Tate    byte[] getDefaultAppsBackup(int userId);
2826038d15cbc7f4648ceaadf5f15d1928c4899f98eChristopher Tate    void restoreDefaultApps(in byte[] backup, int userId);
2836038d15cbc7f4648ceaadf5f15d1928c4899f98eChristopher Tate    byte[] getIntentFilterVerificationBackup(int userId);
2846038d15cbc7f4648ceaadf5f15d1928c4899f98eChristopher Tate    void restoreIntentFilterVerification(in byte[] backup, int userId);
285e9fd1fa31ad6f62d1eb6f32cdcdab50349f246ebChristopher Tate    byte[] getPermissionGrantBackup(int userId);
286e9fd1fa31ad6f62d1eb6f32cdcdab50349f246ebChristopher Tate    void restorePermissionGrants(in byte[] backup, int userId);
287e012a235569fe307d165dfd0784ae847d0b13739Christopher Tate
288e012a235569fe307d165dfd0784ae847d0b13739Christopher Tate    /**
289a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate     * Report the set of 'Home' activity candidates, plus (if any) which of them
290a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate     * is the current "always use this one" setting.
291a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate     */
292a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate     ComponentName getHomeActivities(out List<ResolveInfo> outHomeCandidates);
293a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate
2944828a59d68570270875d43d29b1ee25b799a923dMakoto Onuki    void setHomeActivity(in ComponentName className, int userId);
2954828a59d68570270875d43d29b1ee25b799a923dMakoto Onuki
296a2a0850de8e7324db37e0595d5374bb9c9903461Christopher Tate    /**
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * As per {@link android.content.pm.PackageManager#setComponentEnabledSetting}.
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setComponentEnabledSetting(in ComponentName componentName,
300483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani            in int newState, in int flags, int userId);
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * As per {@link android.content.pm.PackageManager#getComponentEnabledSetting}.
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
305483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    int getComponentEnabledSetting(in ComponentName componentName, int userId);
3062a880312086147577e1e814bda6985fa97fb343bJeff Davidson
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * As per {@link android.content.pm.PackageManager#setApplicationEnabledSetting}.
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3103fa3c28a356108a6558b6b54a0b10e1a5cc4f1b6Dianne Hackborn    void setApplicationEnabledSetting(in String packageName, in int newState, int flags,
3113fa3c28a356108a6558b6b54a0b10e1a5cc4f1b6Dianne Hackborn            int userId, String callingPackage);
3122a880312086147577e1e814bda6985fa97fb343bJeff Davidson
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * As per {@link android.content.pm.PackageManager#getApplicationEnabledSetting}.
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
316483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    int getApplicationEnabledSetting(in String packageName, int userId);
3172a880312086147577e1e814bda6985fa97fb343bJeff Davidson
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
319b52a461851f322b0edf3cb9383da5f449b533311Michal Karpinski     * Logs process start information (including APK hash) to the security log.
320b52a461851f322b0edf3cb9383da5f449b533311Michal Karpinski     */
321b52a461851f322b0edf3cb9383da5f449b533311Michal Karpinski    void logAppProcessStartIfNeeded(String processName, int uid, String seinfo, String apkFile,
322b52a461851f322b0edf3cb9383da5f449b533311Michal Karpinski            int pid);
323b52a461851f322b0edf3cb9383da5f449b533311Michal Karpinski
324b52a461851f322b0edf3cb9383da5f449b533311Michal Karpinski    /**
325bbb3ff2b2a29d42771a9ce2fe2d6f576cff62617Sudheer Shanka     * As per {@link android.content.pm.PackageManager#flushPackageRestrictionsAsUser}.
326bbb3ff2b2a29d42771a9ce2fe2d6f576cff62617Sudheer Shanka     */
327bbb3ff2b2a29d42771a9ce2fe2d6f576cff62617Sudheer Shanka    void flushPackageRestrictionsAsUser(in int userId);
328bbb3ff2b2a29d42771a9ce2fe2d6f576cff62617Sudheer Shanka
329bbb3ff2b2a29d42771a9ce2fe2d6f576cff62617Sudheer Shanka    /**
330e7f972122db87dc54e41ed1a6e417534d43bca3aDianne Hackborn     * Set whether the given package should be considered stopped, making
331e7f972122db87dc54e41ed1a6e417534d43bca3aDianne Hackborn     * it not visible to implicit intents that filter out stopped packages.
332e7f972122db87dc54e41ed1a6e417534d43bca3aDianne Hackborn     */
333483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    void setPackageStoppedState(String packageName, boolean stopped, int userId);
334e7f972122db87dc54e41ed1a6e417534d43bca3aDianne Hackborn
335e7f972122db87dc54e41ed1a6e417534d43bca3aDianne Hackborn    /**
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Free storage by deleting LRU sorted list of cache files across
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * all applications. If the currently available free storage
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * on the device is greater than or equal to the requested
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * free storage, no cache files are cleared. If the currently
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available storage on the device is less than the requested
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * free storage, some or all of the cache files across
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * all applications are deleted (based on last accessed time)
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to increase the free storage space on the device to
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the requested value. There is no guarantee that clearing all
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the cache files from all applications will clear up
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * enough storage to achieve the desired value.
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param freeStorageSize The number of bytes of storage to be
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * freed by the system. Say if freeStorageSize is XX,
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and the current free storage is YY,
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if XX is less than YY, just return. if not free XX-YY number
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of bytes if possible.
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer call back used to notify when
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the operation is completed
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
355529f91fc8e7e884ef19bef8eb3e4e3a1d69336f4Jeff Sharkey     void freeStorageAndNotify(in String volumeUuid, in long freeStorageSize,
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             IPackageDataObserver observer);
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Free storage by deleting LRU sorted list of cache files across
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * all applications. If the currently available free storage
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * on the device is greater than or equal to the requested
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * free storage, no cache files are cleared. If the currently
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available storage on the device is less than the requested
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * free storage, some or all of the cache files across
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * all applications are deleted (based on last accessed time)
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to increase the free storage space on the device to
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the requested value. There is no guarantee that clearing all
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the cache files from all applications will clear up
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * enough storage to achieve the desired value.
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param freeStorageSize The number of bytes of storage to be
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * freed by the system. Say if freeStorageSize is XX,
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and the current free storage is YY,
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if XX is less than YY, just return. if not free XX-YY number
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of bytes if possible.
3751ccac75e1f1b97eccb916a8de04fc1012b30f6e5Suchi Amalapurapu     * @param pi IntentSender call back used to
3761ccac75e1f1b97eccb916a8de04fc1012b30f6e5Suchi Amalapurapu     * notify when the operation is completed.May be null
3771ccac75e1f1b97eccb916a8de04fc1012b30f6e5Suchi Amalapurapu     * to indicate that no call back is desired.
3781ccac75e1f1b97eccb916a8de04fc1012b30f6e5Suchi Amalapurapu     */
379529f91fc8e7e884ef19bef8eb3e4e3a1d69336f4Jeff Sharkey     void freeStorage(in String volumeUuid, in long freeStorageSize,
3801ccac75e1f1b97eccb916a8de04fc1012b30f6e5Suchi Amalapurapu             in IntentSender pi);
3812a880312086147577e1e814bda6985fa97fb343bJeff Davidson
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Delete all the cache files in an applications cache directory
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param packageName The package name of the application whose cache
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * files need to be deleted
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer a callback used to notify when the deletion is finished.
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void deleteApplicationCacheFiles(in String packageName, IPackageDataObserver observer);
3892a880312086147577e1e814bda6985fa97fb343bJeff Davidson
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
39178c9eb8947538f63d2e06684663d400991dfff8fSuprabh Shukla     * Delete all the cache files in an applications cache directory
39278c9eb8947538f63d2e06684663d400991dfff8fSuprabh Shukla     * @param packageName The package name of the application whose cache
39378c9eb8947538f63d2e06684663d400991dfff8fSuprabh Shukla     * files need to be deleted
39478c9eb8947538f63d2e06684663d400991dfff8fSuprabh Shukla     * @param userId the user to delete application cache for
39578c9eb8947538f63d2e06684663d400991dfff8fSuprabh Shukla     * @param observer a callback used to notify when the deletion is finished.
39678c9eb8947538f63d2e06684663d400991dfff8fSuprabh Shukla     */
39778c9eb8947538f63d2e06684663d400991dfff8fSuprabh Shukla    void deleteApplicationCacheFilesAsUser(in String packageName, int userId, IPackageDataObserver observer);
39878c9eb8947538f63d2e06684663d400991dfff8fSuprabh Shukla
39978c9eb8947538f63d2e06684663d400991dfff8fSuprabh Shukla    /**
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Clear the user data directory of an application.
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param packageName The package name of the application whose cache
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * files need to be deleted
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer a callback used to notify when the operation is completed.
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
405483f3b06ea84440a082e21b68ec2c2e54046f5a6Amith Yamasani    void clearApplicationUserData(in String packageName, IPackageDataObserver observer, int userId);
4062a880312086147577e1e814bda6985fa97fb343bJeff Davidson
4079aa6db03f0a317b8414af760b8b1ee6331bedc46David Brazdil    /**
4089aa6db03f0a317b8414af760b8b1ee6331bedc46David Brazdil     * Clear the profile data of an application.
4099aa6db03f0a317b8414af760b8b1ee6331bedc46David Brazdil     * @param packageName The package name of the application whose profile data
4109aa6db03f0a317b8414af760b8b1ee6331bedc46David Brazdil     * need to be deleted
4119aa6db03f0a317b8414af760b8b1ee6331bedc46David Brazdil     */
4129aa6db03f0a317b8414af760b8b1ee6331bedc46David Brazdil    void clearApplicationProfileData(in String packageName);
4139aa6db03f0a317b8414af760b8b1ee6331bedc46David Brazdil
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project   /**
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get package statistics including the code, data and cache size for
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * an already installed package
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param packageName The package name of the application
4180c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn     * @param userHandle Which user the size should be retrieved for
4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer a callback to use to notify when the asynchronous
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * retrieval of information is complete.
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4220c3804950236fe170ebf6cc7a5f1e3e305b8f315Dianne Hackborn    void getPackageSizeInfo(in String packageName, int userHandle, IPackageStatsObserver observer);
4232a880312086147577e1e814bda6985fa97fb343bJeff Davidson
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get a list of shared libraries that are available on the
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * system.
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String[] getSystemSharedLibraryNames();
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
43049237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn    /**
43149237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn     * Get a list of features that are available on the
43249237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn     * system.
43349237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn     */
434d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice getSystemAvailableFeatures();
43549237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn
436115d2c189a46f535778d9dd0923f703ff2f888feJeff Sharkey    boolean hasSystemFeature(String name, int version);
4372a880312086147577e1e814bda6985fa97fb343bJeff Davidson
4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void enterSafeMode();
4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isSafeMode();
4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void systemReady();
4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean hasSystemUidErrors();
442661cd52e0e1d527132eb1cae604d3e64da7ec0cbDianne Hackborn
443661cd52e0e1d527132eb1cae604d3e64da7ec0cbDianne Hackborn    /**
44427c073796978106746e4a51f2100b29068ab37f6Nicolas Geoffray     * Ask the package manager to fstrim the disk if needed.
445661cd52e0e1d527132eb1cae604d3e64da7ec0cbDianne Hackborn     */
44627c073796978106746e4a51f2100b29068ab37f6Nicolas Geoffray    void performFstrimIfNeeded();
44727c073796978106746e4a51f2100b29068ab37f6Nicolas Geoffray
44827c073796978106746e4a51f2100b29068ab37f6Nicolas Geoffray    /**
449f5c444ffd4fdce4fab939fcd88f163288dc804c5David Brazdil     * Ask the package manager to update packages if needed.
450a0e10434c49c6fe075e853da2046fd281318c4c4David Brazdil     */
451f5c444ffd4fdce4fab939fcd88f163288dc804c5David Brazdil    void updatePackagesIfNeeded();
452a0e10434c49c6fe075e853da2046fd281318c4c4David Brazdil
453a0e10434c49c6fe075e853da2046fd281318c4c4David Brazdil    /**
454ca82e616d3131570bf2ee29778f4796f343720d5Brian Carlstrom     * Notify the package manager that a package is going to be used and why.
455ca82e616d3131570bf2ee29778f4796f343720d5Brian Carlstrom     *
456ca82e616d3131570bf2ee29778f4796f343720d5Brian Carlstrom     * See PackageManager.NOTIFY_PACKAGE_USE_* for reasons.
45727c073796978106746e4a51f2100b29068ab37f6Nicolas Geoffray     */
458ca82e616d3131570bf2ee29778f4796f343720d5Brian Carlstrom    void notifyPackageUse(String packageName, int reason);
459661cd52e0e1d527132eb1cae604d3e64da7ec0cbDianne Hackborn
4605c1e00b14d2ef10ec76abf3e951fa8003a67f558Dianne Hackborn    /**
4615c1e00b14d2ef10ec76abf3e951fa8003a67f558Dianne Hackborn     * Ask the package manager to perform dex-opt (if needed) on the given
462fb6cf77a6721f2af4df09b33d649f66ad79559f6Nicolas Geoffray     * package if it already hasn't done so.
4632053168eb4506e2f8795afdbe9731c6451e1589cNarayan Kamath     *
4642053168eb4506e2f8795afdbe9731c6451e1589cNarayan Kamath     * In most cases, apps are dexopted in advance and this function will
4652053168eb4506e2f8795afdbe9731c6451e1589cNarayan Kamath     * be a no-op.
4665c1e00b14d2ef10ec76abf3e951fa8003a67f558Dianne Hackborn     */
467fb6cf77a6721f2af4df09b33d649f66ad79559f6Nicolas Geoffray    boolean performDexOptIfNeeded(String packageName);
468af8e9f4805643f90a9dc0ecfa119e0a860c12f8aSuchi Amalapurapu
469bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe    /**
470bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe     * Ask the package manager to perform a dex-opt for the given reason. The package
471bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe     * manager will map the reason to a compiler filter according to the current system
472bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe     * configuration.
473bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe     */
474fb6cf77a6721f2af4df09b33d649f66ad79559f6Nicolas Geoffray    boolean performDexOpt(String packageName, boolean checkProfiles,
475bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe            int compileReason, boolean force);
476bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe    /**
477bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe     * Ask the package manager to perform a dex-opt with the given compiler filter.
478bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe     *
479bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe     * Note: exposed only for the shell command to allow moving packages explicitly to a
480bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe     *       definite state.
481bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe     */
482fb6cf77a6721f2af4df09b33d649f66ad79559f6Nicolas Geoffray    boolean performDexOptMode(String packageName, boolean checkProfiles,
483bdd30d86ef98456161069d11481b2ccd25a11b4eAndreas Gampe            String targetCompilerFilter, boolean force);
484493411ace40a8b4a90be70576f361c5b7515f29dDavid Brazdil
485a87770828637813dacd176ba3c8d3810f7ed6ab8David Sehr    /**
486a87770828637813dacd176ba3c8d3810f7ed6ab8David Sehr     * Ask the package manager to dump profiles associated with a package.
487a87770828637813dacd176ba3c8d3810f7ed6ab8David Sehr     */
488a87770828637813dacd176ba3c8d3810f7ed6ab8David Sehr    void dumpProfiles(String packageName);
489a87770828637813dacd176ba3c8d3810f7ed6ab8David Sehr
49020e0c50f601e5930a246d4556118423a49c12ca1Jeff Sharkey    void forceDexOpt(String packageName);
49120e0c50f601e5930a246d4556118423a49c12ca1Jeff Sharkey
492af8e9f4805643f90a9dc0ecfa119e0a860c12f8aSuchi Amalapurapu    /**
493af8e9f4805643f90a9dc0ecfa119e0a860c12f8aSuchi Amalapurapu     * Update status of external media on the package manager to scan and
494af8e9f4805643f90a9dc0ecfa119e0a860c12f8aSuchi Amalapurapu     * install packages installed on the external media. Like say the
495af8e9f4805643f90a9dc0ecfa119e0a860c12f8aSuchi Amalapurapu     * MountService uses this to call into the package manager to update
496af8e9f4805643f90a9dc0ecfa119e0a860c12f8aSuchi Amalapurapu     * status of sdcard.
497af8e9f4805643f90a9dc0ecfa119e0a860c12f8aSuchi Amalapurapu     */
498e99bb5f10b90736d10cee9729b56cba156fc0921Suchi Amalapurapu    void updateExternalMediaStatus(boolean mounted, boolean reportStatus);
499af8e9f4805643f90a9dc0ecfa119e0a860c12f8aSuchi Amalapurapu
5007767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn    PackageCleanItem nextPackageToClean(in PackageCleanItem lastPackage);
5018946dd3355fc1dcbad872c0546e356474d4cc5deSuchi Amalapurapu
502620b32b316fd4f1bab4eef55ec8802d14a55e7ddJeff Sharkey    int getMoveStatus(int moveId);
503620b32b316fd4f1bab4eef55ec8802d14a55e7ddJeff Sharkey
504620b32b316fd4f1bab4eef55ec8802d14a55e7ddJeff Sharkey    void registerMoveCallback(in IPackageMoveObserver callback);
505620b32b316fd4f1bab4eef55ec8802d14a55e7ddJeff Sharkey    void unregisterMoveCallback(in IPackageMoveObserver callback);
506620b32b316fd4f1bab4eef55ec8802d14a55e7ddJeff Sharkey
507620b32b316fd4f1bab4eef55ec8802d14a55e7ddJeff Sharkey    int movePackage(in String packageName, in String volumeUuid);
508620b32b316fd4f1bab4eef55ec8802d14a55e7ddJeff Sharkey    int movePrimaryStorage(in String volumeUuid);
509b2b9ab8354da1485178cd8d8e9d89ac915b3f269Jeff Sharkey
510d7c096845dee7616095eda0fe9e7aa08f0ba9c20Dianne Hackborn    boolean addPermissionAsync(in PermissionInfo info);
51140e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu
51240e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu    boolean setInstallLocation(int loc);
51340e472521a544f26cb6956995788f7c36fff1404Suchi Amalapurapu    int getInstallLocation();
5140b285499db739ba50f2f839d633e763c70e67f96Amith Yamasani
51567df64b3a48a8157d08a98fa90135d0ac0ee621cAmith Yamasani    int installExistingPackageAsUser(String packageName, int userId);
5167767eac3232ba2fb9828766813cdb481d6a97584Dianne Hackborn
5173a9b5fbb97e65019abec97f172b4cbf2100d1225Kenny Root    void verifyPendingInstall(int id, int verificationCode);
518d9ef3e5495db1c46bcfcc1a2d4386af8db6deb0crich cannings    void extendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay);
5190aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root
520d3d8a32217d5a2d895917cfe7e1645935d228494Fabrice Di Meglio    void verifyIntentFilter(int id, int verificationCode, in List<String> failedDomains);
5211c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio    int getIntentVerificationStatus(String packageName, int userId);
5221c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio    boolean updateIntentVerificationStatus(String packageName, int status, int userId);
523d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice getIntentFilterVerifications(String packageName);
524d5896630f6a2f21da107031cab216dc93bdcd851Jeff Sharkey    ParceledListSlice getAllIntentFilters(String packageName);
5251c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio
5266227172310663e1267b1fabd68be890a1cb7e145Fabrice Di Meglio    boolean setDefaultBrowserPackageName(String packageName, int userId);
5276227172310663e1267b1fabd68be890a1cb7e145Fabrice Di Meglio    String getDefaultBrowserPackageName(int userId);
5286227172310663e1267b1fabd68be890a1cb7e145Fabrice Di Meglio
5290aaa0d931716e9f57a1d84d795fab2df75092756Kenny Root    VerifierDeviceIdentity getVerifierDeviceIdentity();
53058f42a59bda3bc912d0d2f81dc65a9d31d140eaaDianne Hackborn
53158f42a59bda3bc912d0d2f81dc65a9d31d140eaaDianne Hackborn    boolean isFirstBoot();
53213579ed3305bf89b41a9fa88e1347f0e0769d279Dianne Hackborn    boolean isOnlyCoreApps();
5339f60c08a446e38f9e2d5271546ef69ca5941eba9Jeff Hao    boolean isUpgrade();
534742a67127366c376fdf188ff99ba30b27d3bf90cAmith Yamasani
5355d32e772b3a19c1ac84e665f2885755427d590c8Jeff Sharkey    void setPermissionEnforced(String permission, boolean enforced);
5365d32e772b3a19c1ac84e665f2885755427d590c8Jeff Sharkey    boolean isPermissionEnforced(String permission);
537f6f7f1d2dc6e8fad5d6ff9a56af9929488873b4fJeff Sharkey
538f6f7f1d2dc6e8fad5d6ff9a56af9929488873b4fJeff Sharkey    /** Reflects current DeviceStorageMonitorService state */
539f6f7f1d2dc6e8fad5d6ff9a56af9929488873b4fJeff Sharkey    boolean isStorageLow();
540655d0e2029e6ae77a47e922dce4c4989818b8dd1Amith Yamasani
541e5bcff624fb58b6f95be8ddff7f5b6b3bf5d19c7Amith Yamasani    boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId);
542e5bcff624fb58b6f95be8ddff7f5b6b3bf5d19c7Amith Yamasani    boolean getApplicationHiddenSettingAsUser(String packageName, int userId);
5433a44f3f1b446315ef894e01d2ab9b5388c2bd8c4Jeff Sharkey
5443a44f3f1b446315ef894e01d2ab9b5388c2bd8c4Jeff Sharkey    IPackageInstaller getPackageInstaller();
545c13053bf1c05b980421611487ce67677c08db299Kenny Guy
546c13053bf1c05b980421611487ce67677c08db299Kenny Guy    boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId);
547c13053bf1c05b980421611487ce67677c08db299Kenny Guy    boolean getBlockUninstallForUser(String packageName, int userId);
5489d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman
549c6f22499f3046684d7175e10ca42cce1492cd36fdcashman    KeySet getKeySetByAlias(String packageName, String alias);
550c6f22499f3046684d7175e10ca42cce1492cd36fdcashman    KeySet getSigningKeySet(String packageName);
551c6f22499f3046684d7175e10ca42cce1492cd36fdcashman    boolean isPackageSignedByKeySet(String packageName, in KeySet ks);
552c6f22499f3046684d7175e10ca42cce1492cd36fdcashman    boolean isPackageSignedByKeySetExactly(String packageName, in KeySet ks);
553f7c06eb03ab4479b9d0656a23a4733d17e995183Svetoslav
554f7c06eb03ab4479b9d0656a23a4733d17e995183Svetoslav    void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
555f7c06eb03ab4479b9d0656a23a4733d17e995183Svetoslav    void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener);
556cdfd230a392d0f0557a3a5bada221b7a05113392Svetoslav    void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId);
557ad3b2975574f916c14382628d50c710a78064746Svet Ganov
558ad3b2975574f916c14382628d50c710a78064746Svet Ganov    boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId);
559f1b7f20bb839c96e8254ccb65398135f10fd45d9Svet Ganov
560f1b7f20bb839c96e8254ccb65398135f10fd45d9Svet Ganov    String getPermissionControllerPackageName();
5612acf063da08dfff69f184c9a6a90a7a5fe60d818Svet Ganov
5622acf063da08dfff69f184c9a6a90a7a5fe60d818Svet Ganov    ParceledListSlice getEphemeralApplications(int userId);
5632acf063da08dfff69f184c9a6a90a7a5fe60d818Svet Ganov    byte[] getEphemeralApplicationCookie(String packageName, int userId);
5642acf063da08dfff69f184c9a6a90a7a5fe60d818Svet Ganov    boolean setEphemeralApplicationCookie(String packageName, in byte[] cookie, int userId);
5652acf063da08dfff69f184c9a6a90a7a5fe60d818Svet Ganov    Bitmap getEphemeralApplicationIcon(String packageName, int userId);
5662acf063da08dfff69f184c9a6a90a7a5fe60d818Svet Ganov    boolean isEphemeralApplication(String packageName, int userId);
567bdbc9692c7cb365d9d3f239baa2377724a6f7bc8Fyodor Kupolov
568bdbc9692c7cb365d9d3f239baa2377724a6f7bc8Fyodor Kupolov    boolean setRequiredForSystemUser(String packageName, boolean systemUserApp);
569d7b1f41109abee60ec8529369a85d84300b1d678Svet Ganov
570d7b1f41109abee60ec8529369a85d84300b1d678Svet Ganov    String getServicesSystemSharedLibraryPackageName();
571a9c2500a6863dabdd786f17a25ce0bf3683109a2Svetoslav Ganov    String getSharedSystemSharedLibraryPackageName();
572f34db0a17ee035c165a4e81e9192f73d2455bd1cMakoto Onuki
573f34db0a17ee035c165a4e81e9192f73d2455bd1cMakoto Onuki    boolean isPackageDeviceAdminOnAnyUser(String packageName);
57439bfee5e3674faea992c32204abc1c03429b8cdaTodd Kennedy
57539bfee5e3674faea992c32204abc1c03429b8cdaTodd Kennedy    List<String> getPreviousCodePaths(in String packageName);
5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
577