IPackageManager.aidl revision 76ad1a3c212d09a2c843c1d845c20a4ec5bfd6e4
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.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 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, int userId); 276 boolean isPackageSuspendedForUser(String packageName, int userId); 277 278 /** 279 * Backup/restore support - only the system uid may use these. 280 */ 281 byte[] getPreferredActivityBackup(int userId); 282 void restorePreferredActivities(in byte[] backup, int userId); 283 byte[] getDefaultAppsBackup(int userId); 284 void restoreDefaultApps(in byte[] backup, int userId); 285 byte[] getIntentFilterVerificationBackup(int userId); 286 void restoreIntentFilterVerification(in byte[] backup, int userId); 287 byte[] getPermissionGrantBackup(int userId); 288 void restorePermissionGrants(in byte[] backup, int userId); 289 290 /** 291 * Report the set of 'Home' activity candidates, plus (if any) which of them 292 * is the current "always use this one" setting. 293 */ 294 ComponentName getHomeActivities(out List<ResolveInfo> outHomeCandidates); 295 296 void setHomeActivity(in ComponentName className, int userId); 297 298 /** 299 * As per {@link android.content.pm.PackageManager#setComponentEnabledSetting}. 300 */ 301 void setComponentEnabledSetting(in ComponentName componentName, 302 in int newState, in int flags, int userId); 303 304 /** 305 * As per {@link android.content.pm.PackageManager#getComponentEnabledSetting}. 306 */ 307 int getComponentEnabledSetting(in ComponentName componentName, int userId); 308 309 /** 310 * As per {@link android.content.pm.PackageManager#setApplicationEnabledSetting}. 311 */ 312 void setApplicationEnabledSetting(in String packageName, in int newState, int flags, 313 int userId, String callingPackage); 314 315 /** 316 * As per {@link android.content.pm.PackageManager#getApplicationEnabledSetting}. 317 */ 318 int getApplicationEnabledSetting(in String packageName, int userId); 319 320 /** 321 * Logs process start information (including APK hash) to the security log. 322 */ 323 void logAppProcessStartIfNeeded(String processName, int uid, String seinfo, String apkFile, 324 int pid); 325 326 /** 327 * As per {@link android.content.pm.PackageManager#flushPackageRestrictionsAsUser}. 328 */ 329 void flushPackageRestrictionsAsUser(in int userId); 330 331 /** 332 * Set whether the given package should be considered stopped, making 333 * it not visible to implicit intents that filter out stopped packages. 334 */ 335 void setPackageStoppedState(String packageName, boolean stopped, int userId); 336 337 /** 338 * Free storage by deleting LRU sorted list of cache files across 339 * all applications. If the currently available free storage 340 * on the device is greater than or equal to the requested 341 * free storage, no cache files are cleared. If the currently 342 * available storage on the device is less than the requested 343 * free storage, some or all of the cache files across 344 * all applications are deleted (based on last accessed time) 345 * to increase the free storage space on the device to 346 * the requested value. There is no guarantee that clearing all 347 * the cache files from all applications will clear up 348 * enough storage to achieve the desired value. 349 * @param freeStorageSize The number of bytes of storage to be 350 * freed by the system. Say if freeStorageSize is XX, 351 * and the current free storage is YY, 352 * if XX is less than YY, just return. if not free XX-YY number 353 * of bytes if possible. 354 * @param observer call back used to notify when 355 * the operation is completed 356 */ 357 void freeStorageAndNotify(in String volumeUuid, in long freeStorageSize, 358 int storageFlags, IPackageDataObserver observer); 359 360 /** 361 * Free storage by deleting LRU sorted list of cache files across 362 * all applications. If the currently available free storage 363 * on the device is greater than or equal to the requested 364 * free storage, no cache files are cleared. If the currently 365 * available storage on the device is less than the requested 366 * free storage, some or all of the cache files across 367 * all applications are deleted (based on last accessed time) 368 * to increase the free storage space on the device to 369 * the requested value. There is no guarantee that clearing all 370 * the cache files from all applications will clear up 371 * enough storage to achieve the desired value. 372 * @param freeStorageSize The number of bytes of storage to be 373 * freed by the system. Say if freeStorageSize is XX, 374 * and the current free storage is YY, 375 * if XX is less than YY, just return. if not free XX-YY number 376 * of bytes if possible. 377 * @param pi IntentSender call back used to 378 * notify when the operation is completed.May be null 379 * to indicate that no call back is desired. 380 */ 381 void freeStorage(in String volumeUuid, in long freeStorageSize, 382 int storageFlags, in IntentSender pi); 383 384 /** 385 * Delete all the cache files in an applications cache directory 386 * @param packageName The package name of the application whose cache 387 * files need to be deleted 388 * @param observer a callback used to notify when the deletion is finished. 389 */ 390 void deleteApplicationCacheFiles(in String packageName, IPackageDataObserver observer); 391 392 /** 393 * Delete all the cache files in an applications cache directory 394 * @param packageName The package name of the application whose cache 395 * files need to be deleted 396 * @param userId the user to delete application cache for 397 * @param observer a callback used to notify when the deletion is finished. 398 */ 399 void deleteApplicationCacheFilesAsUser(in String packageName, int userId, IPackageDataObserver observer); 400 401 /** 402 * Clear the user data directory of an application. 403 * @param packageName The package name of the application whose cache 404 * files need to be deleted 405 * @param observer a callback used to notify when the operation is completed. 406 */ 407 void clearApplicationUserData(in String packageName, IPackageDataObserver observer, int userId); 408 409 /** 410 * Clear the profile data of an application. 411 * @param packageName The package name of the application whose profile data 412 * need to be deleted 413 */ 414 void clearApplicationProfileData(in String packageName); 415 416 /** 417 * Get package statistics including the code, data and cache size for 418 * an already installed package 419 * @param packageName The package name of the application 420 * @param userHandle Which user the size should be retrieved for 421 * @param observer a callback to use to notify when the asynchronous 422 * retrieval of information is complete. 423 */ 424 void getPackageSizeInfo(in String packageName, int userHandle, IPackageStatsObserver observer); 425 426 /** 427 * Get a list of shared libraries that are available on the 428 * system. 429 */ 430 String[] getSystemSharedLibraryNames(); 431 432 /** 433 * Get a list of features that are available on the 434 * system. 435 */ 436 ParceledListSlice getSystemAvailableFeatures(); 437 438 boolean hasSystemFeature(String name, int version); 439 440 void enterSafeMode(); 441 boolean isSafeMode(); 442 void systemReady(); 443 boolean hasSystemUidErrors(); 444 445 /** 446 * Ask the package manager to fstrim the disk if needed. 447 */ 448 void performFstrimIfNeeded(); 449 450 /** 451 * Ask the package manager to update packages if needed. 452 */ 453 void updatePackagesIfNeeded(); 454 455 /** 456 * Notify the package manager that a package is going to be used and why. 457 * 458 * See PackageManager.NOTIFY_PACKAGE_USE_* for reasons. 459 */ 460 oneway void notifyPackageUse(String packageName, int reason); 461 462 /** 463 * Notify the package manager that a list of dex files have been loaded. 464 * 465 * @param loadingPackageName the name of the package who performs the load 466 * @param classLoadersNames the names of the class loaders present in the loading chain. The 467 * list encodes the class loader chain in the natural order. The first class loader has 468 * the second one as its parent and so on. The dex files present in the class path of the 469 * first class loader will be recorded in the usage file. 470 * @param classPaths the class paths corresponding to the class loaders names from 471 * {@param classLoadersNames}. The the first element corresponds to the first class loader 472 * and so on. A classpath is represented as a list of dex files separated by 473 * {@code File.pathSeparator}. 474 * The dex files found in the first class path will be recorded in the usage file. 475 * @param loaderIsa the ISA of the loader process 476 */ 477 oneway void notifyDexLoad(String loadingPackageName, in List<String> classLoadersNames, 478 in List<String> classPaths, String loaderIsa); 479 480 /** 481 * Register an application dex module with the package manager. 482 * The package manager will keep track of the given module for future optimizations. 483 * 484 * Dex module optimizations will disable the classpath checking at runtime. The client bares 485 * the responsibility to ensure that the static assumptions on classes in the optimized code 486 * hold at runtime (e.g. there's no duplicate classes in the classpath). 487 * 488 * Note that the package manager already keeps track of dex modules loaded with 489 * {@link dalvik.system.DexClassLoader} and {@link dalvik.system.PathClassLoader}. 490 * This can be called for an eager registration. 491 * 492 * The call might take a while and the results will be posted on the main thread, using 493 * the given callback. 494 * 495 * If the module is intended to be shared with other apps, make sure that the file 496 * permissions allow for it. 497 * If at registration time the permissions allow for others to read it, the module would 498 * be marked as a shared module which might undergo a different optimization strategy. 499 * (usually shared modules will generated larger optimizations artifacts, 500 * taking more disk space). 501 * 502 * @param packageName the package name to which the dex module belongs 503 * @param dexModulePath the absolute path of the dex module. 504 * @param isSharedModule whether or not the module is intended to be used by other apps. 505 * @param callback if not null, 506 * {@link android.content.pm.IDexModuleRegisterCallback.IDexModuleRegisterCallback#onDexModuleRegistered} 507 * will be called once the registration finishes. 508 */ 509 oneway void registerDexModule(in String packageName, in String dexModulePath, 510 in boolean isSharedModule, IDexModuleRegisterCallback callback); 511 512 /** 513 * Ask the package manager to perform a dex-opt with the given compiler filter. 514 * 515 * Note: exposed only for the shell command to allow moving packages explicitly to a 516 * definite state. 517 */ 518 boolean performDexOptMode(String packageName, boolean checkProfiles, 519 String targetCompilerFilter, boolean force, boolean bootComplete, String splitName); 520 521 /** 522 * Ask the package manager to perform a dex-opt with the given compiler filter on the 523 * secondary dex files belonging to the given package. 524 * 525 * Note: exposed only for the shell command to allow moving packages explicitly to a 526 * definite state. 527 */ 528 boolean performDexOptSecondary(String packageName, 529 String targetCompilerFilter, boolean force); 530 531 /** 532 * Ask the package manager to dump profiles associated with a package. 533 */ 534 void dumpProfiles(String packageName); 535 536 void forceDexOpt(String packageName); 537 538 /** 539 * Execute the background dexopt job immediately on packages in packageNames. 540 * If null, then execute on all packages. 541 */ 542 boolean runBackgroundDexoptJob(in List<String> packageNames); 543 544 /** 545 * Reconcile the information we have about the secondary dex files belonging to 546 * {@code packagName} and the actual dex files. For all dex files that were 547 * deleted, update the internal records and delete the generated oat files. 548 */ 549 void reconcileSecondaryDexFiles(String packageName); 550 551 PackageCleanItem nextPackageToClean(in PackageCleanItem lastPackage); 552 553 int getMoveStatus(int moveId); 554 555 void registerMoveCallback(in IPackageMoveObserver callback); 556 void unregisterMoveCallback(in IPackageMoveObserver callback); 557 558 int movePackage(in String packageName, in String volumeUuid); 559 int movePrimaryStorage(in String volumeUuid); 560 561 boolean addPermissionAsync(in PermissionInfo info); 562 563 boolean setInstallLocation(int loc); 564 int getInstallLocation(); 565 566 int installExistingPackageAsUser(String packageName, int userId, int installFlags, 567 int installReason); 568 569 void verifyPendingInstall(int id, int verificationCode); 570 void extendVerificationTimeout(int id, int verificationCodeAtTimeout, long millisecondsToDelay); 571 572 void verifyIntentFilter(int id, int verificationCode, in List<String> failedDomains); 573 int getIntentVerificationStatus(String packageName, int userId); 574 boolean updateIntentVerificationStatus(String packageName, int status, int userId); 575 ParceledListSlice getIntentFilterVerifications(String packageName); 576 ParceledListSlice getAllIntentFilters(String packageName); 577 578 boolean setDefaultBrowserPackageName(String packageName, int userId); 579 String getDefaultBrowserPackageName(int userId); 580 581 VerifierDeviceIdentity getVerifierDeviceIdentity(); 582 583 boolean isFirstBoot(); 584 boolean isOnlyCoreApps(); 585 boolean isUpgrade(); 586 587 void setPermissionEnforced(String permission, boolean enforced); 588 boolean isPermissionEnforced(String permission); 589 590 /** Reflects current DeviceStorageMonitorService state */ 591 boolean isStorageLow(); 592 593 boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId); 594 boolean getApplicationHiddenSettingAsUser(String packageName, int userId); 595 596 IPackageInstaller getPackageInstaller(); 597 598 boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId); 599 boolean getBlockUninstallForUser(String packageName, int userId); 600 601 KeySet getKeySetByAlias(String packageName, String alias); 602 KeySet getSigningKeySet(String packageName); 603 boolean isPackageSignedByKeySet(String packageName, in KeySet ks); 604 boolean isPackageSignedByKeySetExactly(String packageName, in KeySet ks); 605 606 void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); 607 void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); 608 void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); 609 void grantDefaultPermissionsToEnabledImsServices(in String[] packageNames, int userId); 610 void grantDefaultPermissionsToEnabledTelephonyDataServices( 611 in String[] packageNames, int userId); 612 void revokeDefaultPermissionsFromDisabledTelephonyDataServices( 613 in String[] packageNames, int userId); 614 615 boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId); 616 617 String getPermissionControllerPackageName(); 618 619 ParceledListSlice getInstantApps(int userId); 620 byte[] getInstantAppCookie(String packageName, int userId); 621 boolean setInstantAppCookie(String packageName, in byte[] cookie, int userId); 622 Bitmap getInstantAppIcon(String packageName, int userId); 623 boolean isInstantApp(String packageName, int userId); 624 625 boolean setRequiredForSystemUser(String packageName, boolean systemUserApp); 626 627 /** 628 * Sets whether or not an update is available. Ostensibly for instant apps 629 * to force exteranl resolution. 630 */ 631 void setUpdateAvailable(String packageName, boolean updateAvaialble); 632 633 String getServicesSystemSharedLibraryPackageName(); 634 String getSharedSystemSharedLibraryPackageName(); 635 636 ChangedPackages getChangedPackages(int sequenceNumber, int userId); 637 638 boolean isPackageDeviceAdminOnAnyUser(String packageName); 639 640 List<String> getPreviousCodePaths(in String packageName); 641 642 int getInstallReason(String packageName, int userId); 643 644 ParceledListSlice getSharedLibraries(in String packageName, int flags, int userId); 645 646 boolean canRequestPackageInstalls(String packageName, int userId); 647 648 void deletePreloadsFileCache(); 649 650 ComponentName getInstantAppResolverComponent(); 651 652 ComponentName getInstantAppResolverSettingsComponent(); 653 654 ComponentName getInstantAppInstallerComponent(); 655 656 String getInstantAppAndroidId(String packageName, int userId); 657 658 IArtManager getArtManager(); 659 660 void setHarmfulAppWarning(String packageName, CharSequence warning, int userId); 661 662 CharSequence getHarmfulAppWarning(String packageName, int userId); 663 664 boolean hasSigningCertificate(String packageName, in byte[] signingCertificate, int flags); 665 666 boolean hasUidSigningCertificate(int uid, in byte[] signingCertificate, int flags); 667 668 String getSystemTextClassifierPackageName(); 669} 670