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