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<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