IPackageManager.aidl revision b9656a93aac435cefaa4ca0e1b06495d690ba019
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.IPackageInstaller; 30import android.content.pm.IPackageDeleteObserver; 31import android.content.pm.IPackageDeleteObserver2; 32import android.content.pm.IPackageDataObserver; 33import android.content.pm.IPackageMoveObserver; 34import android.content.pm.IPackageStatsObserver; 35import android.content.pm.IOnPermissionsChangeListener; 36import android.content.pm.IntentFilterVerificationInfo; 37import android.content.pm.InstrumentationInfo; 38import android.content.pm.KeySet; 39import android.content.pm.PackageInfo; 40import android.content.pm.PackageCleanItem; 41import android.content.pm.ParceledListSlice; 42import android.content.pm.ProviderInfo; 43import android.content.pm.PermissionGroupInfo; 44import android.content.pm.PermissionInfo; 45import android.content.pm.ResolveInfo; 46import android.content.pm.ServiceInfo; 47import android.content.pm.UserInfo; 48import android.content.pm.VerifierDeviceIdentity; 49import android.content.pm.VersionedPackage; 50import android.content.pm.dex.IArtManager; 51import android.graphics.Bitmap; 52import android.net.Uri; 53import android.os.ParcelFileDescriptor; 54import android.os.PersistableBundle; 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 void finishPackageInstall(int token, boolean didLaunch); 225 226 void setInstallerPackageName(in String targetPackage, in String installerPackageName); 227 228 void setApplicationCategoryHint(String packageName, int categoryHint, String callerPackageName); 229 230 /** @deprecated rawr, don't call AIDL methods directly! */ 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 */ 242 void deletePackageVersioned(in VersionedPackage versionedPackage, 243 IPackageDeleteObserver2 observer, int userId, int flags); 244 245 String getInstallerPackageName(in String packageName); 246 247 void resetApplicationPreferences(int userId); 248 249 ResolveInfo getLastChosenActivity(in Intent intent, 250 String resolvedType, int flags); 251 252 void setLastChosenActivity(in Intent intent, String resolvedType, int flags, 253 in IntentFilter filter, int match, in ComponentName activity); 254 255 void addPreferredActivity(in IntentFilter filter, int match, 256 in ComponentName[] set, in ComponentName activity, int userId); 257 258 void replacePreferredActivity(in IntentFilter filter, int match, 259 in ComponentName[] set, in ComponentName activity, int userId); 260 261 void clearPackagePreferredActivities(String packageName); 262 263 int getPreferredActivities(out List<IntentFilter> outFilters, 264 out List<ComponentName> outActivities, String packageName); 265 266 void addPersistentPreferredActivity(in IntentFilter filter, in ComponentName activity, int userId); 267 268 void clearPackagePersistentPreferredActivities(String packageName, int userId); 269 270 void addCrossProfileIntentFilter(in IntentFilter intentFilter, String ownerPackage, 271 int sourceUserId, int targetUserId, int flags); 272 273 void clearCrossProfileIntentFilters(int sourceUserId, String ownerPackage); 274 275 String[] setPackagesSuspendedAsUser(in String[] packageNames, boolean suspended, 276 in PersistableBundle appExtras, in PersistableBundle launcherExtras, 277 String dialogMessage, String callingPackage, int userId); 278 279 boolean isPackageSuspendedForUser(String packageName, int userId); 280 281 PersistableBundle getSuspendedPackageAppExtras(String packageName, int userId); 282 283 /** 284 * Backup/restore support - only the system uid may use these. 285 */ 286 byte[] getPreferredActivityBackup(int userId); 287 void restorePreferredActivities(in byte[] backup, int userId); 288 byte[] getDefaultAppsBackup(int userId); 289 void restoreDefaultApps(in byte[] backup, int userId); 290 byte[] getIntentFilterVerificationBackup(int userId); 291 void restoreIntentFilterVerification(in byte[] backup, int userId); 292 byte[] getPermissionGrantBackup(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 */ 299 ComponentName getHomeActivities(out List<ResolveInfo> outHomeCandidates); 300 301 void setHomeActivity(in ComponentName className, int userId); 302 303 /** 304 * As per {@link android.content.pm.PackageManager#setComponentEnabledSetting}. 305 */ 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 */ 312 int getComponentEnabledSetting(in ComponentName componentName, int userId); 313 314 /** 315 * As per {@link android.content.pm.PackageManager#setApplicationEnabledSetting}. 316 */ 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 */ 323 int getApplicationEnabledSetting(in String packageName, int userId); 324 325 /** 326 * Logs process start information (including APK hash) to the security log. 327 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 435 String[] getSystemSharedLibraryNames(); 436 437 /** 438 * Get a list of features that are available on the 439 * system. 440 */ 441 ParceledListSlice getSystemAvailableFeatures(); 442 443 boolean hasSystemFeature(String name, int version); 444 445 void enterSafeMode(); 446 boolean isSafeMode(); 447 void systemReady(); 448 boolean hasSystemUidErrors(); 449 450 /** 451 * Ask the package manager to fstrim the disk if needed. 452 */ 453 void performFstrimIfNeeded(); 454 455 /** 456 * Ask the package manager to update packages if needed. 457 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 539 void dumpProfiles(String packageName); 540 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 */ 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 */ 554 void reconcileSecondaryDexFiles(String packageName); 555 556 PackageCleanItem nextPackageToClean(in PackageCleanItem lastPackage); 557 558 int getMoveStatus(int moveId); 559 560 void registerMoveCallback(in IPackageMoveObserver callback); 561 void unregisterMoveCallback(in IPackageMoveObserver callback); 562 563 int movePackage(in String packageName, in String volumeUuid); 564 int movePrimaryStorage(in String volumeUuid); 565 566 boolean addPermissionAsync(in PermissionInfo info); 567 568 boolean setInstallLocation(int loc); 569 int getInstallLocation(); 570 571 int installExistingPackageAsUser(String packageName, int userId, int installFlags, 572 int installReason); 573 574 void verifyPendingInstall(int id, int verificationCode); 575 void extendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay); 576 577 void verifyIntentFilter(int id, int verificationCode, in List<String> failedDomains); 578 int getIntentVerificationStatus(String packageName, int userId); 579 boolean updateIntentVerificationStatus(String packageName, int status, int userId); 580 ParceledListSlice getIntentFilterVerifications(String packageName); 581 ParceledListSlice getAllIntentFilters(String packageName); 582 583 boolean setDefaultBrowserPackageName(String packageName, int userId); 584 String getDefaultBrowserPackageName(int userId); 585 586 VerifierDeviceIdentity getVerifierDeviceIdentity(); 587 588 boolean isFirstBoot(); 589 boolean isOnlyCoreApps(); 590 boolean isUpgrade(); 591 592 void setPermissionEnforced(String permission, boolean enforced); 593 boolean isPermissionEnforced(String permission); 594 595 /** Reflects current DeviceStorageMonitorService state */ 596 boolean isStorageLow(); 597 598 boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId); 599 boolean getApplicationHiddenSettingAsUser(String packageName, int userId); 600 601 IPackageInstaller getPackageInstaller(); 602 603 boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId); 604 boolean getBlockUninstallForUser(String packageName, int userId); 605 606 KeySet getKeySetByAlias(String packageName, String alias); 607 KeySet getSigningKeySet(String packageName); 608 boolean isPackageSignedByKeySet(String packageName, in KeySet ks); 609 boolean isPackageSignedByKeySetExactly(String packageName, in KeySet ks); 610 611 void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); 612 void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); 613 void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); 614 void grantDefaultPermissionsToEnabledImsServices(in String[] packageNames, int userId); 615 void grantDefaultPermissionsToEnabledTelephonyDataServices( 616 in String[] packageNames, int userId); 617 void revokeDefaultPermissionsFromDisabledTelephonyDataServices( 618 in String[] packageNames, int userId); 619 void grantDefaultPermissionsToActiveLuiApp(in String packageName, int userId); 620 void revokeDefaultPermissionsFromLuiApps(in String[] packageNames, int userId); 621 622 boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId); 623 624 String getPermissionControllerPackageName(); 625 626 ParceledListSlice getInstantApps(int userId); 627 byte[] getInstantAppCookie(String packageName, int userId); 628 boolean setInstantAppCookie(String packageName, in byte[] cookie, int userId); 629 Bitmap getInstantAppIcon(String packageName, int userId); 630 boolean isInstantApp(String packageName, int userId); 631 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 */ 638 void setUpdateAvailable(String packageName, boolean updateAvaialble); 639 640 String getServicesSystemSharedLibraryPackageName(); 641 String getSharedSystemSharedLibraryPackageName(); 642 643 ChangedPackages getChangedPackages(int sequenceNumber, int userId); 644 645 boolean isPackageDeviceAdminOnAnyUser(String packageName); 646 647 int getInstallReason(String packageName, int userId); 648 649 ParceledListSlice getSharedLibraries(in String packageName, int flags, int userId); 650 651 boolean canRequestPackageInstalls(String packageName, int userId); 652 653 void deletePreloadsFileCache(); 654 655 ComponentName getInstantAppResolverComponent(); 656 657 ComponentName getInstantAppResolverSettingsComponent(); 658 659 ComponentName getInstantAppInstallerComponent(); 660 661 String getInstantAppAndroidId(String packageName, int userId); 662 663 IArtManager getArtManager(); 664 665 void setHarmfulAppWarning(String packageName, CharSequence warning, int userId); 666 667 CharSequence getHarmfulAppWarning(String packageName, int userId); 668 669 boolean hasSigningCertificate(String packageName, in byte[] signingCertificate, int flags); 670 671 boolean hasUidSigningCertificate(int uid, in byte[] signingCertificate, int flags); 672 673 String getSystemTextClassifierPackageName(); 674 675 boolean isPackageStateProtected(String packageName, int userId); 676} 677