• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 **
3 ** Copyright 2007, 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 
18 package android.content.pm;
19 
20 import android.content.ComponentName;
21 import android.content.Intent;
22 import android.content.IntentFilter;
23 import android.content.pm.ActivityInfo;
24 import android.content.pm.ApplicationInfo;
25 import android.content.pm.ContainerEncryptionParams;
26 import android.content.pm.FeatureInfo;
27 import android.content.pm.IPackageInstallObserver;
28 import android.content.pm.IPackageDeleteObserver;
29 import android.content.pm.IPackageDataObserver;
30 import android.content.pm.IPackageMoveObserver;
31 import android.content.pm.IPackageStatsObserver;
32 import android.content.pm.InstrumentationInfo;
33 import android.content.pm.PackageInfo;
34 import android.content.pm.ManifestDigest;
35 import android.content.pm.PackageCleanItem;
36 import android.content.pm.ParceledListSlice;
37 import android.content.pm.ProviderInfo;
38 import android.content.pm.PermissionGroupInfo;
39 import android.content.pm.PermissionInfo;
40 import android.content.pm.ResolveInfo;
41 import android.content.pm.ServiceInfo;
42 import android.content.pm.UserInfo;
43 import android.content.pm.VerificationParams;
44 import android.content.pm.VerifierDeviceIdentity;
45 import android.net.Uri;
46 import android.os.ParcelFileDescriptor;
47 import android.content.IntentSender;
48 
49 /**
50  *  See {@link PackageManager} for documentation on most of the APIs
51  *  here.
52  *
53  *  {@hide}
54  */
55 interface IPackageManager {
getPackageInfo(String packageName, int flags, int userId)56     PackageInfo getPackageInfo(String packageName, int flags, int userId);
getPackageUid(String packageName, int userId)57     int getPackageUid(String packageName, int userId);
getPackageGids(String packageName)58     int[] getPackageGids(String packageName);
59 
currentToCanonicalPackageNames(in String[] names)60     String[] currentToCanonicalPackageNames(in String[] names);
canonicalToCurrentPackageNames(in String[] names)61     String[] canonicalToCurrentPackageNames(in String[] names);
62 
getPermissionInfo(String name, int flags)63     PermissionInfo getPermissionInfo(String name, int flags);
64 
queryPermissionsByGroup(String group, int flags)65     List<PermissionInfo> queryPermissionsByGroup(String group, int flags);
66 
getPermissionGroupInfo(String name, int flags)67     PermissionGroupInfo getPermissionGroupInfo(String name, int flags);
68 
getAllPermissionGroups(int flags)69     List<PermissionGroupInfo> getAllPermissionGroups(int flags);
70 
getApplicationInfo(String packageName, int flags ,int userId)71     ApplicationInfo getApplicationInfo(String packageName, int flags ,int userId);
72 
getActivityInfo(in ComponentName className, int flags, int userId)73     ActivityInfo getActivityInfo(in ComponentName className, int flags, int userId);
74 
getReceiverInfo(in ComponentName className, int flags, int userId)75     ActivityInfo getReceiverInfo(in ComponentName className, int flags, int userId);
76 
getServiceInfo(in ComponentName className, int flags, int userId)77     ServiceInfo getServiceInfo(in ComponentName className, int flags, int userId);
78 
getProviderInfo(in ComponentName className, int flags, int userId)79     ProviderInfo getProviderInfo(in ComponentName className, int flags, int userId);
80 
checkPermission(String permName, String pkgName)81     int checkPermission(String permName, String pkgName);
82 
checkUidPermission(String permName, int uid)83     int checkUidPermission(String permName, int uid);
84 
addPermission(in PermissionInfo info)85     boolean addPermission(in PermissionInfo info);
86 
removePermission(String name)87     void removePermission(String name);
88 
grantPermission(String packageName, String permissionName)89     void grantPermission(String packageName, String permissionName);
90 
revokePermission(String packageName, String permissionName)91     void revokePermission(String packageName, String permissionName);
92 
isProtectedBroadcast(String actionName)93     boolean isProtectedBroadcast(String actionName);
94 
checkSignatures(String pkg1, String pkg2)95     int checkSignatures(String pkg1, String pkg2);
96 
checkUidSignatures(int uid1, int uid2)97     int checkUidSignatures(int uid1, int uid2);
98 
getPackagesForUid(int uid)99     String[] getPackagesForUid(int uid);
100 
getNameForUid(int uid)101     String getNameForUid(int uid);
102 
getUidForSharedUser(String sharedUserName)103     int getUidForSharedUser(String sharedUserName);
104 
resolveIntent(in Intent intent, String resolvedType, int flags, int userId)105     ResolveInfo resolveIntent(in Intent intent, String resolvedType, int flags, int userId);
106 
queryIntentActivities(in Intent intent, String resolvedType, int flags, int userId)107     List<ResolveInfo> queryIntentActivities(in Intent intent,
108             String resolvedType, int flags, int userId);
109 
queryIntentActivityOptions( in ComponentName caller, in Intent[] specifics, in String[] specificTypes, in Intent intent, String resolvedType, int flags, int userId)110     List<ResolveInfo> queryIntentActivityOptions(
111             in ComponentName caller, in Intent[] specifics,
112             in String[] specificTypes, in Intent intent,
113             String resolvedType, int flags, int userId);
114 
queryIntentReceivers(in Intent intent, String resolvedType, int flags, int userId)115     List<ResolveInfo> queryIntentReceivers(in Intent intent,
116             String resolvedType, int flags, int userId);
117 
resolveService(in Intent intent, String resolvedType, int flags, int userId)118     ResolveInfo resolveService(in Intent intent,
119             String resolvedType, int flags, int userId);
120 
queryIntentServices(in Intent intent, String resolvedType, int flags, int userId)121     List<ResolveInfo> queryIntentServices(in Intent intent,
122             String resolvedType, int flags, int userId);
123 
124     /**
125      * This implements getInstalledPackages via a "last returned row"
126      * mechanism that is not exposed in the API. This is to get around the IPC
127      * limit that kicks in when flags are included that bloat up the data
128      * returned.
129      */
getInstalledPackages(int flags, in String lastRead, in int userId)130     ParceledListSlice getInstalledPackages(int flags, in String lastRead, in int userId);
131 
132     /**
133      * This implements getInstalledApplications via a "last returned row"
134      * mechanism that is not exposed in the API. This is to get around the IPC
135      * limit that kicks in when flags are included that bloat up the data
136      * returned.
137      */
getInstalledApplications(int flags, in String lastRead, int userId)138     ParceledListSlice getInstalledApplications(int flags, in String lastRead, int userId);
139 
140     /**
141      * Retrieve all applications that are marked as persistent.
142      *
143      * @return A List&lt;applicationInfo> containing one entry for each persistent
144      *         application.
145      */
getPersistentApplications(int flags)146     List<ApplicationInfo> getPersistentApplications(int flags);
147 
resolveContentProvider(String name, int flags, int userId)148     ProviderInfo resolveContentProvider(String name, int flags, int userId);
149 
150     /**
151      * Retrieve sync information for all content providers.
152      *
153      * @param outNames Filled in with a list of the root names of the content
154      *                 providers that can sync.
155      * @param outInfo Filled in with a list of the ProviderInfo for each
156      *                name in 'outNames'.
157      */
querySyncProviders(inout List<String> outNames, inout List<ProviderInfo> outInfo)158     void querySyncProviders(inout List<String> outNames,
159             inout List<ProviderInfo> outInfo);
160 
queryContentProviders( String processName, int uid, int flags)161     List<ProviderInfo> queryContentProviders(
162             String processName, int uid, int flags);
163 
getInstrumentationInfo( in ComponentName className, int flags)164     InstrumentationInfo getInstrumentationInfo(
165             in ComponentName className, int flags);
166 
queryInstrumentation( String targetPackage, int flags)167     List<InstrumentationInfo> queryInstrumentation(
168             String targetPackage, int flags);
169 
170     /**
171      * Install a package.
172      *
173      * @param packageURI The location of the package file to install.
174      * @param observer a callback to use to notify when the package installation in finished.
175      * @param flags - possible values: {@link #FORWARD_LOCK_PACKAGE},
176      * {@link #REPLACE_EXISITING_PACKAGE}
177      * @param installerPackageName Optional package name of the application that is performing the
178      * installation. This identifies which market the package came from.
179      */
installPackage(in Uri packageURI, IPackageInstallObserver observer, int flags, in String installerPackageName)180     void installPackage(in Uri packageURI, IPackageInstallObserver observer, int flags,
181             in String installerPackageName);
182 
finishPackageInstall(int token)183     void finishPackageInstall(int token);
184 
setInstallerPackageName(in String targetPackage, in String installerPackageName)185     void setInstallerPackageName(in String targetPackage, in String installerPackageName);
186 
187     /**
188      * Delete a package.
189      *
190      * @param packageName The fully qualified name of the package to delete.
191      * @param observer a callback to use to notify when the package deletion in finished.
192      * @param flags - possible values: {@link #DONT_DELETE_DATA}
193      */
deletePackage(in String packageName, IPackageDeleteObserver observer, int flags)194     void deletePackage(in String packageName, IPackageDeleteObserver observer, int flags);
195 
getInstallerPackageName(in String packageName)196     String getInstallerPackageName(in String packageName);
197 
addPackageToPreferred(String packageName)198     void addPackageToPreferred(String packageName);
199 
removePackageFromPreferred(String packageName)200     void removePackageFromPreferred(String packageName);
201 
getPreferredPackages(int flags)202     List<PackageInfo> getPreferredPackages(int flags);
203 
addPreferredActivity(in IntentFilter filter, int match, in ComponentName[] set, in ComponentName activity, int userId)204     void addPreferredActivity(in IntentFilter filter, int match,
205             in ComponentName[] set, in ComponentName activity, int userId);
206 
replacePreferredActivity(in IntentFilter filter, int match, in ComponentName[] set, in ComponentName activity)207     void replacePreferredActivity(in IntentFilter filter, int match,
208             in ComponentName[] set, in ComponentName activity);
209 
clearPackagePreferredActivities(String packageName)210     void clearPackagePreferredActivities(String packageName);
211 
getPreferredActivities(out List<IntentFilter> outFilters, out List<ComponentName> outActivities, String packageName)212     int getPreferredActivities(out List<IntentFilter> outFilters,
213             out List<ComponentName> outActivities, String packageName);
214 
215     /**
216      * As per {@link android.content.pm.PackageManager#setComponentEnabledSetting}.
217      */
setComponentEnabledSetting(in ComponentName componentName, in int newState, in int flags, int userId)218     void setComponentEnabledSetting(in ComponentName componentName,
219             in int newState, in int flags, int userId);
220 
221     /**
222      * As per {@link android.content.pm.PackageManager#getComponentEnabledSetting}.
223      */
getComponentEnabledSetting(in ComponentName componentName, int userId)224     int getComponentEnabledSetting(in ComponentName componentName, int userId);
225 
226     /**
227      * As per {@link android.content.pm.PackageManager#setApplicationEnabledSetting}.
228      */
setApplicationEnabledSetting(in String packageName, in int newState, int flags, int userId)229     void setApplicationEnabledSetting(in String packageName, in int newState, int flags, int userId);
230 
231     /**
232      * As per {@link android.content.pm.PackageManager#getApplicationEnabledSetting}.
233      */
getApplicationEnabledSetting(in String packageName, int userId)234     int getApplicationEnabledSetting(in String packageName, int userId);
235 
236     /**
237      * Set whether the given package should be considered stopped, making
238      * it not visible to implicit intents that filter out stopped packages.
239      */
setPackageStoppedState(String packageName, boolean stopped, int userId)240     void setPackageStoppedState(String packageName, boolean stopped, int userId);
241 
242     /**
243      * Free storage by deleting LRU sorted list of cache files across
244      * all applications. If the currently available free storage
245      * on the device is greater than or equal to the requested
246      * free storage, no cache files are cleared. If the currently
247      * available storage on the device is less than the requested
248      * free storage, some or all of the cache files across
249      * all applications are deleted (based on last accessed time)
250      * to increase the free storage space on the device to
251      * the requested value. There is no guarantee that clearing all
252      * the cache files from all applications will clear up
253      * enough storage to achieve the desired value.
254      * @param freeStorageSize The number of bytes of storage to be
255      * freed by the system. Say if freeStorageSize is XX,
256      * and the current free storage is YY,
257      * if XX is less than YY, just return. if not free XX-YY number
258      * of bytes if possible.
259      * @param observer call back used to notify when
260      * the operation is completed
261      */
freeStorageAndNotify(in long freeStorageSize, IPackageDataObserver observer)262      void freeStorageAndNotify(in long freeStorageSize,
263              IPackageDataObserver observer);
264 
265     /**
266      * Free storage by deleting LRU sorted list of cache files across
267      * all applications. If the currently available free storage
268      * on the device is greater than or equal to the requested
269      * free storage, no cache files are cleared. If the currently
270      * available storage on the device is less than the requested
271      * free storage, some or all of the cache files across
272      * all applications are deleted (based on last accessed time)
273      * to increase the free storage space on the device to
274      * the requested value. There is no guarantee that clearing all
275      * the cache files from all applications will clear up
276      * enough storage to achieve the desired value.
277      * @param freeStorageSize The number of bytes of storage to be
278      * freed by the system. Say if freeStorageSize is XX,
279      * and the current free storage is YY,
280      * if XX is less than YY, just return. if not free XX-YY number
281      * of bytes if possible.
282      * @param pi IntentSender call back used to
283      * notify when the operation is completed.May be null
284      * to indicate that no call back is desired.
285      */
freeStorage(in long freeStorageSize, in IntentSender pi)286      void freeStorage(in long freeStorageSize,
287              in IntentSender pi);
288 
289     /**
290      * Delete all the cache files in an applications cache directory
291      * @param packageName The package name of the application whose cache
292      * files need to be deleted
293      * @param observer a callback used to notify when the deletion is finished.
294      */
deleteApplicationCacheFiles(in String packageName, IPackageDataObserver observer)295     void deleteApplicationCacheFiles(in String packageName, IPackageDataObserver observer);
296 
297     /**
298      * Clear the user data directory of an application.
299      * @param packageName The package name of the application whose cache
300      * files need to be deleted
301      * @param observer a callback used to notify when the operation is completed.
302      */
clearApplicationUserData(in String packageName, IPackageDataObserver observer, int userId)303     void clearApplicationUserData(in String packageName, IPackageDataObserver observer, int userId);
304 
305    /**
306      * Get package statistics including the code, data and cache size for
307      * an already installed package
308      * @param packageName The package name of the application
309      * @param userHandle Which user the size should be retrieved for
310      * @param observer a callback to use to notify when the asynchronous
311      * retrieval of information is complete.
312      */
getPackageSizeInfo(in String packageName, int userHandle, IPackageStatsObserver observer)313     void getPackageSizeInfo(in String packageName, int userHandle, IPackageStatsObserver observer);
314 
315     /**
316      * Get a list of shared libraries that are available on the
317      * system.
318      */
getSystemSharedLibraryNames()319     String[] getSystemSharedLibraryNames();
320 
321     /**
322      * Get a list of features that are available on the
323      * system.
324      */
getSystemAvailableFeatures()325     FeatureInfo[] getSystemAvailableFeatures();
326 
hasSystemFeature(String name)327     boolean hasSystemFeature(String name);
328 
enterSafeMode()329     void enterSafeMode();
isSafeMode()330     boolean isSafeMode();
systemReady()331     void systemReady();
hasSystemUidErrors()332     boolean hasSystemUidErrors();
333 
334     /**
335      * Ask the package manager to perform boot-time dex-opt of all
336      * existing packages.
337      */
performBootDexOpt()338     void performBootDexOpt();
339 
340     /**
341      * Ask the package manager to perform dex-opt (if needed) on the given
342      * package, if it already hasn't done mode.  Only does this if running
343      * in the special development "no pre-dexopt" mode.
344      */
performDexOpt(String packageName)345     boolean performDexOpt(String packageName);
346 
347     /**
348      * Update status of external media on the package manager to scan and
349      * install packages installed on the external media. Like say the
350      * MountService uses this to call into the package manager to update
351      * status of sdcard.
352      */
updateExternalMediaStatus(boolean mounted, boolean reportStatus)353     void updateExternalMediaStatus(boolean mounted, boolean reportStatus);
354 
nextPackageToClean(in PackageCleanItem lastPackage)355     PackageCleanItem nextPackageToClean(in PackageCleanItem lastPackage);
356 
movePackage(String packageName, IPackageMoveObserver observer, int flags)357     void movePackage(String packageName, IPackageMoveObserver observer, int flags);
358 
addPermissionAsync(in PermissionInfo info)359     boolean addPermissionAsync(in PermissionInfo info);
360 
setInstallLocation(int loc)361     boolean setInstallLocation(int loc);
getInstallLocation()362     int getInstallLocation();
363 
installPackageWithVerification(in Uri packageURI, in IPackageInstallObserver observer, int flags, in String installerPackageName, in Uri verificationURI, in ManifestDigest manifestDigest, in ContainerEncryptionParams encryptionParams)364     void installPackageWithVerification(in Uri packageURI, in IPackageInstallObserver observer,
365             int flags, in String installerPackageName, in Uri verificationURI,
366             in ManifestDigest manifestDigest, in ContainerEncryptionParams encryptionParams);
367 
installPackageWithVerificationAndEncryption(in Uri packageURI, in IPackageInstallObserver observer, int flags, in String installerPackageName, in VerificationParams verificationParams, in ContainerEncryptionParams encryptionParams)368     void installPackageWithVerificationAndEncryption(in Uri packageURI,
369             in IPackageInstallObserver observer, int flags, in String installerPackageName,
370             in VerificationParams verificationParams,
371             in ContainerEncryptionParams encryptionParams);
372 
installExistingPackage(String packageName)373     int installExistingPackage(String packageName);
374 
verifyPendingInstall(int id, int verificationCode)375     void verifyPendingInstall(int id, int verificationCode);
extendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay)376     void extendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay);
377 
getVerifierDeviceIdentity()378     VerifierDeviceIdentity getVerifierDeviceIdentity();
379 
isFirstBoot()380     boolean isFirstBoot();
isOnlyCoreApps()381     boolean isOnlyCoreApps();
382 
setPermissionEnforced(String permission, boolean enforced)383     void setPermissionEnforced(String permission, boolean enforced);
isPermissionEnforced(String permission)384     boolean isPermissionEnforced(String permission);
385 
386     /** Reflects current DeviceStorageMonitorService state */
isStorageLow()387     boolean isStorageLow();
388 }
389