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.ChangedPackages; 26 import android.content.pm.InstantAppInfo; 27 import android.content.pm.FeatureInfo; 28 import android.content.pm.IDexModuleRegisterCallback; 29 import android.content.pm.IPackageInstaller; 30 import android.content.pm.IPackageDeleteObserver; 31 import android.content.pm.IPackageDeleteObserver2; 32 import android.content.pm.IPackageDataObserver; 33 import android.content.pm.IPackageMoveObserver; 34 import android.content.pm.IPackageStatsObserver; 35 import android.content.pm.IOnPermissionsChangeListener; 36 import android.content.pm.IntentFilterVerificationInfo; 37 import android.content.pm.InstrumentationInfo; 38 import android.content.pm.KeySet; 39 import android.content.pm.PackageInfo; 40 import android.content.pm.PackageCleanItem; 41 import android.content.pm.ParceledListSlice; 42 import android.content.pm.ProviderInfo; 43 import android.content.pm.PermissionGroupInfo; 44 import android.content.pm.PermissionInfo; 45 import android.content.pm.ResolveInfo; 46 import android.content.pm.ServiceInfo; 47 import android.content.pm.UserInfo; 48 import android.content.pm.VerifierDeviceIdentity; 49 import android.content.pm.VersionedPackage; 50 import android.content.pm.dex.IArtManager; 51 import android.graphics.Bitmap; 52 import android.net.Uri; 53 import android.os.ParcelFileDescriptor; 54 import android.os.PersistableBundle; 55 import android.content.IntentSender; 56 57 /** 58 * See {@link PackageManager} for documentation on most of the APIs 59 * here. 60 * 61 * {@hide} 62 */ 63 interface IPackageManager { checkPackageStartable(String packageName, int userId)64 void checkPackageStartable(String packageName, int userId); isPackageAvailable(String packageName, int userId)65 boolean isPackageAvailable(String packageName, int userId); getPackageInfo(String packageName, int flags, int userId)66 PackageInfo getPackageInfo(String packageName, int flags, int userId); getPackageInfoVersioned(in VersionedPackage versionedPackage, int flags, int userId)67 PackageInfo getPackageInfoVersioned(in VersionedPackage versionedPackage, 68 int flags, int userId); getPackageUid(String packageName, int flags, int userId)69 int getPackageUid(String packageName, int flags, int userId); getPackageGids(String packageName, int flags, int userId)70 int[] getPackageGids(String packageName, int flags, int userId); 71 currentToCanonicalPackageNames(in String[] names)72 String[] currentToCanonicalPackageNames(in String[] names); canonicalToCurrentPackageNames(in String[] names)73 String[] canonicalToCurrentPackageNames(in String[] names); 74 getPermissionInfo(String name, String packageName, int flags)75 PermissionInfo getPermissionInfo(String name, String packageName, int flags); 76 queryPermissionsByGroup(String group, int flags)77 ParceledListSlice queryPermissionsByGroup(String group, int flags); 78 getPermissionGroupInfo(String name, int flags)79 PermissionGroupInfo getPermissionGroupInfo(String name, int flags); 80 getAllPermissionGroups(int flags)81 ParceledListSlice getAllPermissionGroups(int flags); 82 getApplicationInfo(String packageName, int flags ,int userId)83 ApplicationInfo getApplicationInfo(String packageName, int flags ,int userId); 84 getActivityInfo(in ComponentName className, int flags, int userId)85 ActivityInfo getActivityInfo(in ComponentName className, int flags, int userId); 86 activitySupportsIntent(in ComponentName className, in Intent intent, String resolvedType)87 boolean activitySupportsIntent(in ComponentName className, in Intent intent, 88 String resolvedType); 89 getReceiverInfo(in ComponentName className, int flags, int userId)90 ActivityInfo getReceiverInfo(in ComponentName className, int flags, int userId); 91 getServiceInfo(in ComponentName className, int flags, int userId)92 ServiceInfo getServiceInfo(in ComponentName className, int flags, int userId); 93 getProviderInfo(in ComponentName className, int flags, int userId)94 ProviderInfo getProviderInfo(in ComponentName className, int flags, int userId); 95 checkPermission(String permName, String pkgName, int userId)96 int checkPermission(String permName, String pkgName, int userId); 97 checkUidPermission(String permName, int uid)98 int checkUidPermission(String permName, int uid); 99 addPermission(in PermissionInfo info)100 boolean addPermission(in PermissionInfo info); 101 removePermission(String name)102 void removePermission(String name); 103 grantRuntimePermission(String packageName, String permissionName, int userId)104 void grantRuntimePermission(String packageName, String permissionName, int userId); 105 revokeRuntimePermission(String packageName, String permissionName, int userId)106 void revokeRuntimePermission(String packageName, String permissionName, int userId); 107 resetRuntimePermissions()108 void resetRuntimePermissions(); 109 getPermissionFlags(String permissionName, String packageName, int userId)110 int getPermissionFlags(String permissionName, String packageName, int userId); 111 updatePermissionFlags(String permissionName, String packageName, int flagMask, int flagValues, int userId)112 void updatePermissionFlags(String permissionName, String packageName, int flagMask, 113 int flagValues, int userId); 114 updatePermissionFlagsForAllApps(int flagMask, int flagValues, int userId)115 void updatePermissionFlagsForAllApps(int flagMask, int flagValues, int userId); 116 shouldShowRequestPermissionRationale(String permissionName, String packageName, int userId)117 boolean shouldShowRequestPermissionRationale(String permissionName, 118 String packageName, int userId); 119 isProtectedBroadcast(String actionName)120 boolean isProtectedBroadcast(String actionName); 121 checkSignatures(String pkg1, String pkg2)122 int checkSignatures(String pkg1, String pkg2); 123 checkUidSignatures(int uid1, int uid2)124 int checkUidSignatures(int uid1, int uid2); 125 getAllPackages()126 List<String> getAllPackages(); 127 getPackagesForUid(int uid)128 String[] getPackagesForUid(int uid); 129 getNameForUid(int uid)130 String getNameForUid(int uid); getNamesForUids(in int[] uids)131 String[] getNamesForUids(in int[] uids); 132 getUidForSharedUser(String sharedUserName)133 int getUidForSharedUser(String sharedUserName); 134 getFlagsForUid(int uid)135 int getFlagsForUid(int uid); 136 getPrivateFlagsForUid(int uid)137 int getPrivateFlagsForUid(int uid); 138 isUidPrivileged(int uid)139 boolean isUidPrivileged(int uid); 140 getAppOpPermissionPackages(String permissionName)141 String[] getAppOpPermissionPackages(String permissionName); 142 resolveIntent(in Intent intent, String resolvedType, int flags, int userId)143 ResolveInfo resolveIntent(in Intent intent, String resolvedType, int flags, int userId); 144 findPersistentPreferredActivity(in Intent intent, int userId)145 ResolveInfo findPersistentPreferredActivity(in Intent intent, int userId); 146 canForwardTo(in Intent intent, String resolvedType, int sourceUserId, int targetUserId)147 boolean canForwardTo(in Intent intent, String resolvedType, int sourceUserId, int targetUserId); 148 queryIntentActivities(in Intent intent, String resolvedType, int flags, int userId)149 ParceledListSlice queryIntentActivities(in Intent intent, 150 String resolvedType, int flags, int userId); 151 queryIntentActivityOptions( in ComponentName caller, in Intent[] specifics, in String[] specificTypes, in Intent intent, String resolvedType, int flags, int userId)152 ParceledListSlice queryIntentActivityOptions( 153 in ComponentName caller, in Intent[] specifics, 154 in String[] specificTypes, in Intent intent, 155 String resolvedType, int flags, int userId); 156 queryIntentReceivers(in Intent intent, String resolvedType, int flags, int userId)157 ParceledListSlice queryIntentReceivers(in Intent intent, 158 String resolvedType, int flags, int userId); 159 resolveService(in Intent intent, String resolvedType, int flags, int userId)160 ResolveInfo resolveService(in Intent intent, 161 String resolvedType, int flags, int userId); 162 queryIntentServices(in Intent intent, String resolvedType, int flags, int userId)163 ParceledListSlice queryIntentServices(in Intent intent, 164 String resolvedType, int flags, int userId); 165 queryIntentContentProviders(in Intent intent, String resolvedType, int flags, int userId)166 ParceledListSlice queryIntentContentProviders(in Intent intent, 167 String resolvedType, int flags, int userId); 168 169 /** 170 * This implements getInstalledPackages via a "last returned row" 171 * mechanism that is not exposed in the API. This is to get around the IPC 172 * limit that kicks in when flags are included that bloat up the data 173 * returned. 174 */ getInstalledPackages(int flags, in int userId)175 ParceledListSlice getInstalledPackages(int flags, in int userId); 176 177 /** 178 * This implements getPackagesHoldingPermissions via a "last returned row" 179 * mechanism that is not exposed in the API. This is to get around the IPC 180 * limit that kicks in when flags are included that bloat up the data 181 * returned. 182 */ getPackagesHoldingPermissions(in String[] permissions, int flags, int userId)183 ParceledListSlice getPackagesHoldingPermissions(in String[] permissions, 184 int flags, int userId); 185 186 /** 187 * This implements getInstalledApplications via a "last returned row" 188 * mechanism that is not exposed in the API. This is to get around the IPC 189 * limit that kicks in when flags are included that bloat up the data 190 * returned. 191 */ getInstalledApplications(int flags, int userId)192 ParceledListSlice getInstalledApplications(int flags, int userId); 193 194 /** 195 * Retrieve all applications that are marked as persistent. 196 * 197 * @return A List<applicationInfo> containing one entry for each persistent 198 * application. 199 */ getPersistentApplications(int flags)200 ParceledListSlice getPersistentApplications(int flags); 201 resolveContentProvider(String name, int flags, int userId)202 ProviderInfo resolveContentProvider(String name, int flags, int userId); 203 204 /** 205 * Retrieve sync information for all content providers. 206 * 207 * @param outNames Filled in with a list of the root names of the content 208 * providers that can sync. 209 * @param outInfo Filled in with a list of the ProviderInfo for each 210 * name in 'outNames'. 211 */ querySyncProviders(inout List<String> outNames, inout List<ProviderInfo> outInfo)212 void querySyncProviders(inout List<String> outNames, 213 inout List<ProviderInfo> outInfo); 214 queryContentProviders( String processName, int uid, int flags, String metaDataKey)215 ParceledListSlice queryContentProviders( 216 String processName, int uid, int flags, String metaDataKey); 217 getInstrumentationInfo( in ComponentName className, int flags)218 InstrumentationInfo getInstrumentationInfo( 219 in ComponentName className, int flags); 220 queryInstrumentation( String targetPackage, int flags)221 ParceledListSlice queryInstrumentation( 222 String targetPackage, int flags); 223 finishPackageInstall(int token, boolean didLaunch)224 void finishPackageInstall(int token, boolean didLaunch); 225 setInstallerPackageName(in String targetPackage, in String installerPackageName)226 void setInstallerPackageName(in String targetPackage, in String installerPackageName); 227 setApplicationCategoryHint(String packageName, int categoryHint, String callerPackageName)228 void setApplicationCategoryHint(String packageName, int categoryHint, String callerPackageName); 229 230 /** @deprecated rawr, don't call AIDL methods directly! */ deletePackageAsUser(in String packageName, int versionCode, IPackageDeleteObserver observer, int userId, int flags)231 void deletePackageAsUser(in String packageName, int versionCode, 232 IPackageDeleteObserver observer, int userId, int flags); 233 234 /** 235 * Delete a package for a specific user. 236 * 237 * @param versionedPackage The package to delete. 238 * @param observer a callback to use to notify when the package deletion in finished. 239 * @param userId the id of the user for whom to delete the package 240 * @param flags - possible values: {@link #DONT_DELETE_DATA} 241 */ deletePackageVersioned(in VersionedPackage versionedPackage, IPackageDeleteObserver2 observer, int userId, int flags)242 void deletePackageVersioned(in VersionedPackage versionedPackage, 243 IPackageDeleteObserver2 observer, int userId, int flags); 244 getInstallerPackageName(in String packageName)245 String getInstallerPackageName(in String packageName); 246 resetApplicationPreferences(int userId)247 void resetApplicationPreferences(int userId); 248 getLastChosenActivity(in Intent intent, String resolvedType, int flags)249 ResolveInfo getLastChosenActivity(in Intent intent, 250 String resolvedType, int flags); 251 setLastChosenActivity(in Intent intent, String resolvedType, int flags, in IntentFilter filter, int match, in ComponentName activity)252 void setLastChosenActivity(in Intent intent, String resolvedType, int flags, 253 in IntentFilter filter, int match, in ComponentName activity); 254 addPreferredActivity(in IntentFilter filter, int match, in ComponentName[] set, in ComponentName activity, int userId)255 void addPreferredActivity(in IntentFilter filter, int match, 256 in ComponentName[] set, in ComponentName activity, int userId); 257 replacePreferredActivity(in IntentFilter filter, int match, in ComponentName[] set, in ComponentName activity, int userId)258 void replacePreferredActivity(in IntentFilter filter, int match, 259 in ComponentName[] set, in ComponentName activity, int userId); 260 clearPackagePreferredActivities(String packageName)261 void clearPackagePreferredActivities(String packageName); 262 getPreferredActivities(out List<IntentFilter> outFilters, out List<ComponentName> outActivities, String packageName)263 int getPreferredActivities(out List<IntentFilter> outFilters, 264 out List<ComponentName> outActivities, String packageName); 265 addPersistentPreferredActivity(in IntentFilter filter, in ComponentName activity, int userId)266 void addPersistentPreferredActivity(in IntentFilter filter, in ComponentName activity, int userId); 267 clearPackagePersistentPreferredActivities(String packageName, int userId)268 void clearPackagePersistentPreferredActivities(String packageName, int userId); 269 addCrossProfileIntentFilter(in IntentFilter intentFilter, String ownerPackage, int sourceUserId, int targetUserId, int flags)270 void addCrossProfileIntentFilter(in IntentFilter intentFilter, String ownerPackage, 271 int sourceUserId, int targetUserId, int flags); 272 clearCrossProfileIntentFilters(int sourceUserId, String ownerPackage)273 void clearCrossProfileIntentFilters(int sourceUserId, String ownerPackage); 274 setPackagesSuspendedAsUser(in String[] packageNames, boolean suspended, in PersistableBundle appExtras, in PersistableBundle launcherExtras, String dialogMessage, String callingPackage, int userId)275 String[] setPackagesSuspendedAsUser(in String[] packageNames, boolean suspended, 276 in PersistableBundle appExtras, in PersistableBundle launcherExtras, 277 String dialogMessage, String callingPackage, int userId); 278 isPackageSuspendedForUser(String packageName, int userId)279 boolean isPackageSuspendedForUser(String packageName, int userId); 280 getSuspendedPackageAppExtras(String packageName, int userId)281 PersistableBundle getSuspendedPackageAppExtras(String packageName, int userId); 282 283 /** 284 * Backup/restore support - only the system uid may use these. 285 */ getPreferredActivityBackup(int userId)286 byte[] getPreferredActivityBackup(int userId); restorePreferredActivities(in byte[] backup, int userId)287 void restorePreferredActivities(in byte[] backup, int userId); getDefaultAppsBackup(int userId)288 byte[] getDefaultAppsBackup(int userId); restoreDefaultApps(in byte[] backup, int userId)289 void restoreDefaultApps(in byte[] backup, int userId); getIntentFilterVerificationBackup(int userId)290 byte[] getIntentFilterVerificationBackup(int userId); restoreIntentFilterVerification(in byte[] backup, int userId)291 void restoreIntentFilterVerification(in byte[] backup, int userId); getPermissionGrantBackup(int userId)292 byte[] getPermissionGrantBackup(int userId); restorePermissionGrants(in byte[] backup, int userId)293 void restorePermissionGrants(in byte[] backup, int userId); 294 295 /** 296 * Report the set of 'Home' activity candidates, plus (if any) which of them 297 * is the current "always use this one" setting. 298 */ getHomeActivities(out List<ResolveInfo> outHomeCandidates)299 ComponentName getHomeActivities(out List<ResolveInfo> outHomeCandidates); 300 setHomeActivity(in ComponentName className, int userId)301 void setHomeActivity(in ComponentName className, int userId); 302 303 /** 304 * As per {@link android.content.pm.PackageManager#setComponentEnabledSetting}. 305 */ setComponentEnabledSetting(in ComponentName componentName, in int newState, in int flags, int userId)306 void setComponentEnabledSetting(in ComponentName componentName, 307 in int newState, in int flags, int userId); 308 309 /** 310 * As per {@link android.content.pm.PackageManager#getComponentEnabledSetting}. 311 */ getComponentEnabledSetting(in ComponentName componentName, int userId)312 int getComponentEnabledSetting(in ComponentName componentName, int userId); 313 314 /** 315 * As per {@link android.content.pm.PackageManager#setApplicationEnabledSetting}. 316 */ setApplicationEnabledSetting(in String packageName, in int newState, int flags, int userId, String callingPackage)317 void setApplicationEnabledSetting(in String packageName, in int newState, int flags, 318 int userId, String callingPackage); 319 320 /** 321 * As per {@link android.content.pm.PackageManager#getApplicationEnabledSetting}. 322 */ getApplicationEnabledSetting(in String packageName, int userId)323 int getApplicationEnabledSetting(in String packageName, int userId); 324 325 /** 326 * Logs process start information (including APK hash) to the security log. 327 */ logAppProcessStartIfNeeded(String processName, int uid, String seinfo, String apkFile, int pid)328 void logAppProcessStartIfNeeded(String processName, int uid, String seinfo, String apkFile, 329 int pid); 330 331 /** 332 * As per {@link android.content.pm.PackageManager#flushPackageRestrictionsAsUser}. 333 */ flushPackageRestrictionsAsUser(in int userId)334 void flushPackageRestrictionsAsUser(in int userId); 335 336 /** 337 * Set whether the given package should be considered stopped, making 338 * it not visible to implicit intents that filter out stopped packages. 339 */ setPackageStoppedState(String packageName, boolean stopped, int userId)340 void setPackageStoppedState(String packageName, boolean stopped, int userId); 341 342 /** 343 * Free storage by deleting LRU sorted list of cache files across 344 * all applications. If the currently available free storage 345 * on the device is greater than or equal to the requested 346 * free storage, no cache files are cleared. If the currently 347 * available storage on the device is less than the requested 348 * free storage, some or all of the cache files across 349 * all applications are deleted (based on last accessed time) 350 * to increase the free storage space on the device to 351 * the requested value. There is no guarantee that clearing all 352 * the cache files from all applications will clear up 353 * enough storage to achieve the desired value. 354 * @param freeStorageSize The number of bytes of storage to be 355 * freed by the system. Say if freeStorageSize is XX, 356 * and the current free storage is YY, 357 * if XX is less than YY, just return. if not free XX-YY number 358 * of bytes if possible. 359 * @param observer call back used to notify when 360 * the operation is completed 361 */ freeStorageAndNotify(in String volumeUuid, in long freeStorageSize, int storageFlags, IPackageDataObserver observer)362 void freeStorageAndNotify(in String volumeUuid, in long freeStorageSize, 363 int storageFlags, IPackageDataObserver observer); 364 365 /** 366 * Free storage by deleting LRU sorted list of cache files across 367 * all applications. If the currently available free storage 368 * on the device is greater than or equal to the requested 369 * free storage, no cache files are cleared. If the currently 370 * available storage on the device is less than the requested 371 * free storage, some or all of the cache files across 372 * all applications are deleted (based on last accessed time) 373 * to increase the free storage space on the device to 374 * the requested value. There is no guarantee that clearing all 375 * the cache files from all applications will clear up 376 * enough storage to achieve the desired value. 377 * @param freeStorageSize The number of bytes of storage to be 378 * freed by the system. Say if freeStorageSize is XX, 379 * and the current free storage is YY, 380 * if XX is less than YY, just return. if not free XX-YY number 381 * of bytes if possible. 382 * @param pi IntentSender call back used to 383 * notify when the operation is completed.May be null 384 * to indicate that no call back is desired. 385 */ freeStorage(in String volumeUuid, in long freeStorageSize, int storageFlags, in IntentSender pi)386 void freeStorage(in String volumeUuid, in long freeStorageSize, 387 int storageFlags, in IntentSender pi); 388 389 /** 390 * Delete all the cache files in an applications cache directory 391 * @param packageName The package name of the application whose cache 392 * files need to be deleted 393 * @param observer a callback used to notify when the deletion is finished. 394 */ deleteApplicationCacheFiles(in String packageName, IPackageDataObserver observer)395 void deleteApplicationCacheFiles(in String packageName, IPackageDataObserver observer); 396 397 /** 398 * Delete all the cache files in an applications cache directory 399 * @param packageName The package name of the application whose cache 400 * files need to be deleted 401 * @param userId the user to delete application cache for 402 * @param observer a callback used to notify when the deletion is finished. 403 */ deleteApplicationCacheFilesAsUser(in String packageName, int userId, IPackageDataObserver observer)404 void deleteApplicationCacheFilesAsUser(in String packageName, int userId, IPackageDataObserver observer); 405 406 /** 407 * Clear the user data directory of an application. 408 * @param packageName The package name of the application whose cache 409 * files need to be deleted 410 * @param observer a callback used to notify when the operation is completed. 411 */ clearApplicationUserData(in String packageName, IPackageDataObserver observer, int userId)412 void clearApplicationUserData(in String packageName, IPackageDataObserver observer, int userId); 413 414 /** 415 * Clear the profile data of an application. 416 * @param packageName The package name of the application whose profile data 417 * need to be deleted 418 */ clearApplicationProfileData(in String packageName)419 void clearApplicationProfileData(in String packageName); 420 421 /** 422 * Get package statistics including the code, data and cache size for 423 * an already installed package 424 * @param packageName The package name of the application 425 * @param userHandle Which user the size should be retrieved for 426 * @param observer a callback to use to notify when the asynchronous 427 * retrieval of information is complete. 428 */ getPackageSizeInfo(in String packageName, int userHandle, IPackageStatsObserver observer)429 void getPackageSizeInfo(in String packageName, int userHandle, IPackageStatsObserver observer); 430 431 /** 432 * Get a list of shared libraries that are available on the 433 * system. 434 */ getSystemSharedLibraryNames()435 String[] getSystemSharedLibraryNames(); 436 437 /** 438 * Get a list of features that are available on the 439 * system. 440 */ getSystemAvailableFeatures()441 ParceledListSlice getSystemAvailableFeatures(); 442 hasSystemFeature(String name, int version)443 boolean hasSystemFeature(String name, int version); 444 enterSafeMode()445 void enterSafeMode(); isSafeMode()446 boolean isSafeMode(); systemReady()447 void systemReady(); hasSystemUidErrors()448 boolean hasSystemUidErrors(); 449 450 /** 451 * Ask the package manager to fstrim the disk if needed. 452 */ performFstrimIfNeeded()453 void performFstrimIfNeeded(); 454 455 /** 456 * Ask the package manager to update packages if needed. 457 */ updatePackagesIfNeeded()458 void updatePackagesIfNeeded(); 459 460 /** 461 * Notify the package manager that a package is going to be used and why. 462 * 463 * See PackageManager.NOTIFY_PACKAGE_USE_* for reasons. 464 */ notifyPackageUse(String packageName, int reason)465 oneway void notifyPackageUse(String packageName, int reason); 466 467 /** 468 * Notify the package manager that a list of dex files have been loaded. 469 * 470 * @param loadingPackageName the name of the package who performs the load 471 * @param classLoadersNames the names of the class loaders present in the loading chain. The 472 * list encodes the class loader chain in the natural order. The first class loader has 473 * the second one as its parent and so on. The dex files present in the class path of the 474 * first class loader will be recorded in the usage file. 475 * @param classPaths the class paths corresponding to the class loaders names from 476 * {@param classLoadersNames}. The the first element corresponds to the first class loader 477 * and so on. A classpath is represented as a list of dex files separated by 478 * {@code File.pathSeparator}. 479 * The dex files found in the first class path will be recorded in the usage file. 480 * @param loaderIsa the ISA of the loader process 481 */ notifyDexLoad(String loadingPackageName, in List<String> classLoadersNames, in List<String> classPaths, String loaderIsa)482 oneway void notifyDexLoad(String loadingPackageName, in List<String> classLoadersNames, 483 in List<String> classPaths, String loaderIsa); 484 485 /** 486 * Register an application dex module with the package manager. 487 * The package manager will keep track of the given module for future optimizations. 488 * 489 * Dex module optimizations will disable the classpath checking at runtime. The client bares 490 * the responsibility to ensure that the static assumptions on classes in the optimized code 491 * hold at runtime (e.g. there's no duplicate classes in the classpath). 492 * 493 * Note that the package manager already keeps track of dex modules loaded with 494 * {@link dalvik.system.DexClassLoader} and {@link dalvik.system.PathClassLoader}. 495 * This can be called for an eager registration. 496 * 497 * The call might take a while and the results will be posted on the main thread, using 498 * the given callback. 499 * 500 * If the module is intended to be shared with other apps, make sure that the file 501 * permissions allow for it. 502 * If at registration time the permissions allow for others to read it, the module would 503 * be marked as a shared module which might undergo a different optimization strategy. 504 * (usually shared modules will generated larger optimizations artifacts, 505 * taking more disk space). 506 * 507 * @param packageName the package name to which the dex module belongs 508 * @param dexModulePath the absolute path of the dex module. 509 * @param isSharedModule whether or not the module is intended to be used by other apps. 510 * @param callback if not null, 511 * {@link android.content.pm.IDexModuleRegisterCallback.IDexModuleRegisterCallback#onDexModuleRegistered} 512 * will be called once the registration finishes. 513 */ registerDexModule(in String packageName, in String dexModulePath, in boolean isSharedModule, IDexModuleRegisterCallback callback)514 oneway void registerDexModule(in String packageName, in String dexModulePath, 515 in boolean isSharedModule, IDexModuleRegisterCallback callback); 516 517 /** 518 * Ask the package manager to perform a dex-opt with the given compiler filter. 519 * 520 * Note: exposed only for the shell command to allow moving packages explicitly to a 521 * definite state. 522 */ performDexOptMode(String packageName, boolean checkProfiles, String targetCompilerFilter, boolean force, boolean bootComplete, String splitName)523 boolean performDexOptMode(String packageName, boolean checkProfiles, 524 String targetCompilerFilter, boolean force, boolean bootComplete, String splitName); 525 526 /** 527 * Ask the package manager to perform a dex-opt with the given compiler filter on the 528 * secondary dex files belonging to the given package. 529 * 530 * Note: exposed only for the shell command to allow moving packages explicitly to a 531 * definite state. 532 */ performDexOptSecondary(String packageName, String targetCompilerFilter, boolean force)533 boolean performDexOptSecondary(String packageName, 534 String targetCompilerFilter, boolean force); 535 536 /** 537 * Ask the package manager to dump profiles associated with a package. 538 */ dumpProfiles(String packageName)539 void dumpProfiles(String packageName); 540 forceDexOpt(String packageName)541 void forceDexOpt(String packageName); 542 543 /** 544 * Execute the background dexopt job immediately on packages in packageNames. 545 * If null, then execute on all packages. 546 */ runBackgroundDexoptJob(in List<String> packageNames)547 boolean runBackgroundDexoptJob(in List<String> packageNames); 548 549 /** 550 * Reconcile the information we have about the secondary dex files belonging to 551 * {@code packagName} and the actual dex files. For all dex files that were 552 * deleted, update the internal records and delete the generated oat files. 553 */ reconcileSecondaryDexFiles(String packageName)554 void reconcileSecondaryDexFiles(String packageName); 555 nextPackageToClean(in PackageCleanItem lastPackage)556 PackageCleanItem nextPackageToClean(in PackageCleanItem lastPackage); 557 getMoveStatus(int moveId)558 int getMoveStatus(int moveId); 559 registerMoveCallback(in IPackageMoveObserver callback)560 void registerMoveCallback(in IPackageMoveObserver callback); unregisterMoveCallback(in IPackageMoveObserver callback)561 void unregisterMoveCallback(in IPackageMoveObserver callback); 562 movePackage(in String packageName, in String volumeUuid)563 int movePackage(in String packageName, in String volumeUuid); movePrimaryStorage(in String volumeUuid)564 int movePrimaryStorage(in String volumeUuid); 565 addPermissionAsync(in PermissionInfo info)566 boolean addPermissionAsync(in PermissionInfo info); 567 setInstallLocation(int loc)568 boolean setInstallLocation(int loc); getInstallLocation()569 int getInstallLocation(); 570 installExistingPackageAsUser(String packageName, int userId, int installFlags, int installReason)571 int installExistingPackageAsUser(String packageName, int userId, int installFlags, 572 int installReason); 573 verifyPendingInstall(int id, int verificationCode)574 void verifyPendingInstall(int id, int verificationCode); extendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay)575 void extendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay); 576 verifyIntentFilter(int id, int verificationCode, in List<String> failedDomains)577 void verifyIntentFilter(int id, int verificationCode, in List<String> failedDomains); getIntentVerificationStatus(String packageName, int userId)578 int getIntentVerificationStatus(String packageName, int userId); updateIntentVerificationStatus(String packageName, int status, int userId)579 boolean updateIntentVerificationStatus(String packageName, int status, int userId); getIntentFilterVerifications(String packageName)580 ParceledListSlice getIntentFilterVerifications(String packageName); getAllIntentFilters(String packageName)581 ParceledListSlice getAllIntentFilters(String packageName); 582 setDefaultBrowserPackageName(String packageName, int userId)583 boolean setDefaultBrowserPackageName(String packageName, int userId); getDefaultBrowserPackageName(int userId)584 String getDefaultBrowserPackageName(int userId); 585 getVerifierDeviceIdentity()586 VerifierDeviceIdentity getVerifierDeviceIdentity(); 587 isFirstBoot()588 boolean isFirstBoot(); isOnlyCoreApps()589 boolean isOnlyCoreApps(); isUpgrade()590 boolean isUpgrade(); 591 setPermissionEnforced(String permission, boolean enforced)592 void setPermissionEnforced(String permission, boolean enforced); isPermissionEnforced(String permission)593 boolean isPermissionEnforced(String permission); 594 595 /** Reflects current DeviceStorageMonitorService state */ isStorageLow()596 boolean isStorageLow(); 597 setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId)598 boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId); getApplicationHiddenSettingAsUser(String packageName, int userId)599 boolean getApplicationHiddenSettingAsUser(String packageName, int userId); 600 getPackageInstaller()601 IPackageInstaller getPackageInstaller(); 602 setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId)603 boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId); getBlockUninstallForUser(String packageName, int userId)604 boolean getBlockUninstallForUser(String packageName, int userId); 605 getKeySetByAlias(String packageName, String alias)606 KeySet getKeySetByAlias(String packageName, String alias); getSigningKeySet(String packageName)607 KeySet getSigningKeySet(String packageName); isPackageSignedByKeySet(String packageName, in KeySet ks)608 boolean isPackageSignedByKeySet(String packageName, in KeySet ks); isPackageSignedByKeySetExactly(String packageName, in KeySet ks)609 boolean isPackageSignedByKeySetExactly(String packageName, in KeySet ks); 610 addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener)611 void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener)612 void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId)613 void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); grantDefaultPermissionsToEnabledImsServices(in String[] packageNames, int userId)614 void grantDefaultPermissionsToEnabledImsServices(in String[] packageNames, int userId); grantDefaultPermissionsToEnabledTelephonyDataServices( in String[] packageNames, int userId)615 void grantDefaultPermissionsToEnabledTelephonyDataServices( 616 in String[] packageNames, int userId); revokeDefaultPermissionsFromDisabledTelephonyDataServices( in String[] packageNames, int userId)617 void revokeDefaultPermissionsFromDisabledTelephonyDataServices( 618 in String[] packageNames, int userId); grantDefaultPermissionsToActiveLuiApp(in String packageName, int userId)619 void grantDefaultPermissionsToActiveLuiApp(in String packageName, int userId); revokeDefaultPermissionsFromLuiApps(in String[] packageNames, int userId)620 void revokeDefaultPermissionsFromLuiApps(in String[] packageNames, int userId); 621 isPermissionRevokedByPolicy(String permission, String packageName, int userId)622 boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId); 623 getPermissionControllerPackageName()624 String getPermissionControllerPackageName(); 625 getInstantApps(int userId)626 ParceledListSlice getInstantApps(int userId); getInstantAppCookie(String packageName, int userId)627 byte[] getInstantAppCookie(String packageName, int userId); setInstantAppCookie(String packageName, in byte[] cookie, int userId)628 boolean setInstantAppCookie(String packageName, in byte[] cookie, int userId); getInstantAppIcon(String packageName, int userId)629 Bitmap getInstantAppIcon(String packageName, int userId); isInstantApp(String packageName, int userId)630 boolean isInstantApp(String packageName, int userId); 631 setRequiredForSystemUser(String packageName, boolean systemUserApp)632 boolean setRequiredForSystemUser(String packageName, boolean systemUserApp); 633 634 /** 635 * Sets whether or not an update is available. Ostensibly for instant apps 636 * to force exteranl resolution. 637 */ setUpdateAvailable(String packageName, boolean updateAvaialble)638 void setUpdateAvailable(String packageName, boolean updateAvaialble); 639 getServicesSystemSharedLibraryPackageName()640 String getServicesSystemSharedLibraryPackageName(); getSharedSystemSharedLibraryPackageName()641 String getSharedSystemSharedLibraryPackageName(); 642 getChangedPackages(int sequenceNumber, int userId)643 ChangedPackages getChangedPackages(int sequenceNumber, int userId); 644 isPackageDeviceAdminOnAnyUser(String packageName)645 boolean isPackageDeviceAdminOnAnyUser(String packageName); 646 getInstallReason(String packageName, int userId)647 int getInstallReason(String packageName, int userId); 648 getSharedLibraries(in String packageName, int flags, int userId)649 ParceledListSlice getSharedLibraries(in String packageName, int flags, int userId); 650 canRequestPackageInstalls(String packageName, int userId)651 boolean canRequestPackageInstalls(String packageName, int userId); 652 deletePreloadsFileCache()653 void deletePreloadsFileCache(); 654 getInstantAppResolverComponent()655 ComponentName getInstantAppResolverComponent(); 656 getInstantAppResolverSettingsComponent()657 ComponentName getInstantAppResolverSettingsComponent(); 658 getInstantAppInstallerComponent()659 ComponentName getInstantAppInstallerComponent(); 660 getInstantAppAndroidId(String packageName, int userId)661 String getInstantAppAndroidId(String packageName, int userId); 662 getArtManager()663 IArtManager getArtManager(); 664 setHarmfulAppWarning(String packageName, CharSequence warning, int userId)665 void setHarmfulAppWarning(String packageName, CharSequence warning, int userId); 666 getHarmfulAppWarning(String packageName, int userId)667 CharSequence getHarmfulAppWarning(String packageName, int userId); 668 hasSigningCertificate(String packageName, in byte[] signingCertificate, int flags)669 boolean hasSigningCertificate(String packageName, in byte[] signingCertificate, int flags); 670 hasUidSigningCertificate(int uid, in byte[] signingCertificate, int flags)671 boolean hasUidSigningCertificate(int uid, in byte[] signingCertificate, int flags); 672 getSystemTextClassifierPackageName()673 String getSystemTextClassifierPackageName(); 674 isPackageStateProtected(String packageName, int userId)675 boolean isPackageStateProtected(String packageName, int userId); 676 } 677