PackageInstaller.SessionParams
  public
  static
  
  
  class
  PackageInstaller.SessionParams
  
    extends Object
  
  
  
  
  
      implements
      
        Parcelable
      
  
  
| java.lang.Object | |
| ↳ | android.content.pm.PackageInstaller.SessionParams | 
Parameters for creating a new PackageInstaller.Session.
Summary
| Constants | |
|---|---|
| int | MODE_FULL_INSTALLMode for an install session whose staged APKs should fully replace any existing APKs for the target app. | 
| int | MODE_INHERIT_EXISTINGMode for an install session that should inherit any existing APKs for the target app, unless they have been explicitly overridden (based on split name) by the session. | 
| int | PERMISSION_STATE_DEFAULTValue is passed by the installer to  | 
| int | PERMISSION_STATE_DENIEDValue is passed by the installer to  | 
| int | PERMISSION_STATE_GRANTEDValue is passed by the installer to  | 
| int | USER_ACTION_NOT_REQUIREDThis value is passed by the installer to  | 
| int | USER_ACTION_REQUIREDThis value is passed by the installer to  | 
| int | USER_ACTION_UNSPECIFIEDThis value is passed by the installer to  | 
| Inherited constants | 
|---|
| Fields | |
|---|---|
| 
    public
    static
    final
    Creator<PackageInstaller.SessionParams> | CREATOR
 | 
| 
    public
    static
    final
    Set<String> | RESTRICTED_PERMISSIONS_ALLSpecial constant to refer to all restricted permissions. | 
| Public constructors | |
|---|---|
| 
      SessionParams(int mode)
      Construct parameters for a new package install session. | |
| Public methods | |
|---|---|
| 
        
        
        
        
        
        int | 
      describeContents()
      Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. | 
| 
        
        
        
        
        
        void | 
      setAppIcon(Bitmap appIcon)
      Optionally set an icon representing the app being installed. | 
| 
        
        
        
        
        
        void | 
      setAppLabel(CharSequence appLabel)
      Optionally set a label representing the app being installed. | 
| 
        
        
        
        
        
        void | 
      setAppPackageName(String appPackageName)
      Optionally set the package name of the app being installed. | 
| 
        
        
        
        
        
        void | 
      setApplicationEnabledSettingPersistent()
      Request to keep the original application enabled setting. | 
| 
        
        
        
        
        
        void | 
      setAutoInstallDependenciesEnabled(boolean enableAutoInstallDependencies)
      Optionally indicate whether missing SDK or static shared library dependencies should be automatically fetched and installed when installing an app that wants to use these dependencies. | 
| 
        
        
        
        
        
        void | 
      setAutoRevokePermissionsMode(boolean shouldAutoRevoke)
      This method was deprecated in API level 31. No longer used | 
| 
        
        
        
        
        
        void | 
      setDontKillApp(boolean dontKillApp)
      Requests that the system not kill any of the package's running
 processes as part of a  | 
| 
        
        
        
        
        
        void | 
      setExtensionParams(PersistableBundle extensionParams)
      Optionally called to provide a set of parameters to pass directly to the developer verification service provider (a.k.a., the verifier) to provide any additional context regarding the pending verification. | 
| 
        
        
        
        
        
        void | 
      setInstallLocation(int installLocation)
      Provide value of  | 
| 
        
        
        
        
        
        void | 
      setInstallReason(int installReason)
      Set the reason for installing this package. | 
| 
        
        
        
        
        
        void | 
      setInstallScenario(int installScenario)
      Sets the install scenario for this session, which describes the expected user journey. | 
| 
        
        
        
        
        
        void | 
      setInstallerPackageName(String installerPackageName)
      Set the installer package for the app. | 
| 
        
        
        
        
        
        void | 
      setMultiPackage()
      Set this session to be the parent of a multi-package install. | 
| 
        
        
        
        
        
        void | 
      setOriginatingUid(int originatingUid)
      Sets the UID that initiated the package installation. | 
| 
        
        
        
        
        
        void | 
      setOriginatingUri(Uri originatingUri)
      Optionally set the URI where this package was downloaded from. | 
| 
        
        
        
        
        
        void | 
      setPackageSource(int packageSource)
      Optionally indicate the package source of the app being installed. | 
| 
        
        
        
        
        
        PackageInstaller.SessionParams | 
      setPermissionState(String permissionName, int state)
      Sets the state of permissions for the package at installation. | 
| 
        
        
        
        
        
        void | 
      setReferrerUri(Uri referrerUri)
      Optionally set the URI that referred you to install this package. | 
| 
        
        
        
        
        
        void | 
      setRequestUpdateOwnership(boolean enable)
      Optionally indicate whether the package being installed needs the update ownership enforcement. | 
| 
        
        
        
        
        
        void | 
      setRequireUserAction(int requireUserAction)
      Optionally indicate whether user action should be required when the session is committed. | 
| 
        
        
        
        
        
        void | 
      setSize(long sizeBytes)
      Optionally indicate the total size (in bytes) of all APKs that will be delivered in this session. | 
| 
        
        
        
        
        
        void | 
      setUnarchiveId(int unarchiveId)
      Used to set the unarchive ID received as part of an
  | 
| 
        
        
        
        
        
        void | 
      setWhitelistedRestrictedPermissions(Set<String> permissions)
      Sets which restricted permissions to be allowlisted for the app. | 
| 
        
        
        
        
        
        void | 
      writeToParcel(Parcel dest, int flags)
      Flatten this object in to a Parcel. | 
| Inherited methods | |
|---|---|
Constants
MODE_FULL_INSTALL
public static final int MODE_FULL_INSTALL
Mode for an install session whose staged APKs should fully replace any existing APKs for the target app.
Constant Value: 1 (0x00000001)
MODE_INHERIT_EXISTING
public static final int MODE_INHERIT_EXISTING
Mode for an install session that should inherit any existing APKs for the target app, unless they have been explicitly overridden (based on split name) by the session. For example, this can be used to add one or more split APKs to an existing installation.
 If there are no existing APKs for the target app, this behaves like
 MODE_FULL_INSTALL.
Constant Value: 2 (0x00000002)
PERMISSION_STATE_DEFAULT
public static final int PERMISSION_STATE_DEFAULT
Value is passed by the installer to setPermissionState(java.lang.String, int) to set
 the state of a permission. This indicates no preference by the installer, relying on
 the device's default policy to set the grant state of the permission.
Constant Value: 0 (0x00000000)
PERMISSION_STATE_DENIED
public static final int PERMISSION_STATE_DENIED
Value is passed by the installer to setPermissionState(java.lang.String, int) to set
 the state of a permission. This indicates the installers wants to deny the permission
 by default to the package being installed. The user and other actors in the system may
 still be able to grant the permission after installation.
Constant Value: 2 (0x00000002)
PERMISSION_STATE_GRANTED
public static final int PERMISSION_STATE_GRANTED
Value is passed by the installer to setPermissionState(java.lang.String, int) to set
 the state of a permission. This indicates the installers wants to automatically grant
 the permission to the package being installed. The user and other actors in the system
 may still be able to deny the permission after installation.
Constant Value: 1 (0x00000001)
USER_ACTION_NOT_REQUIRED
public static final int USER_ACTION_NOT_REQUIRED
This value is passed by the installer to SessionParams.setRequireUserAction(int)
 to indicate that user action is not required for this install.
Constant Value: 2 (0x00000002)
USER_ACTION_REQUIRED
public static final int USER_ACTION_REQUIRED
This value is passed by the installer to SessionParams.setRequireUserAction(int)
 to indicate that user action is required for this install.
Constant Value: 1 (0x00000001)
USER_ACTION_UNSPECIFIED
public static final int USER_ACTION_UNSPECIFIED
This value is passed by the installer to SessionParams.setRequireUserAction(int)
 to indicate that user action is unspecified for this install.
 requireUserAction also defaults to this value unless modified by
 SessionParams.setRequireUserAction(int)
Constant Value: 0 (0x00000000)
Fields
RESTRICTED_PERMISSIONS_ALL
public static final Set<String> RESTRICTED_PERMISSIONS_ALL
Special constant to refer to all restricted permissions.
Public constructors
SessionParams
public SessionParams (int mode)
Construct parameters for a new package install session.
| Parameters | |
|---|---|
| mode | int: one ofMODE_FULL_INSTALLorMODE_INHERIT_EXISTINGdescribing how the session
            should interact with an existing app. | 
Public methods
describeContents
public int describeContents ()
Describe the kinds of special objects contained in this Parcelable
 instance's marshaled representation. For example, if the object will
 include a file descriptor in the output of writeToParcel(android.os.Parcel, int),
 the return value of this method must include the
 CONTENTS_FILE_DESCRIPTOR bit.
| Returns | |
|---|---|
| int | a bitmask indicating the set of special object types marshaled
 by this Parcelable object instance.
 Value is either 0orCONTENTS_FILE_DESCRIPTOR | 
setAppIcon
public void setAppIcon (Bitmap appIcon)
Optionally set an icon representing the app being installed. This should
 be roughly ActivityManager.getLauncherLargeIconSize() in both
 dimensions.
| Parameters | |
|---|---|
| appIcon | Bitmap: This value may benull. | 
setAppLabel
public void setAppLabel (CharSequence appLabel)
Optionally set a label representing the app being installed. This value will be trimmed to the first 1000 characters.
| Parameters | |
|---|---|
| appLabel | CharSequence: This value may benull. | 
setAppPackageName
public void setAppPackageName (String appPackageName)
Optionally set the package name of the app being installed. It's strongly recommended that you provide this value when known, so that observers can communicate installing apps to users.
If the APKs staged in the session aren't consistent with this package name, the install will fail. Regardless of this value, all APKs in the app must have the same package name.
| Parameters | |
|---|---|
| appPackageName | String: This value may benull. | 
setApplicationEnabledSettingPersistent
public void setApplicationEnabledSettingPersistent ()
Request to keep the original application enabled setting. This will prevent the application from being enabled if it was previously in a disabled state.
setAutoInstallDependenciesEnabled
public void setAutoInstallDependenciesEnabled (boolean enableAutoInstallDependencies)
Optionally indicate whether missing SDK or static shared library dependencies should be automatically fetched and installed when installing an app that wants to use these dependencies.
This feature is enabled by default. Note that in the case of a multi-package installation session, no dependencies will be automatically installed even if this field is set to true.
| Parameters | |
|---|---|
| enableAutoInstallDependencies | boolean:trueto enable auto-installation of missing
                                      SDK or static shared library dependencies,falseto disable and fail immediately if
                                      dependencies aren't already installed. | 
setAutoRevokePermissionsMode
public void setAutoRevokePermissionsMode (boolean shouldAutoRevoke)
      This method was deprecated
      in API level 31.
    No longer used
  
Sets whether permissions should be auto-revoked if this package is unused for an extended periodd of time. It's disabled by default but generally the installer should enable it for most packages, excluding only those where doing so might cause breakage that cannot be easily addressed by simply re-requesting the permission(s). If user explicitly enabled or disabled it via settings, this call is ignored.
| Parameters | |
|---|---|
| shouldAutoRevoke | boolean: whether permissions should be auto-revoked. | 
setDontKillApp
public void setDontKillApp (boolean dontKillApp)
Requests that the system not kill any of the package's running
 processes as part of a SessionParams.MODE_INHERIT_EXISTING
 session in which splits being added. By default, all installs will
 result in the package's running processes being killed before the
 install completes.
| Parameters | |
|---|---|
| dontKillApp | boolean: set totrueto request that the processes
                    belonging to the package not be killed as part of
                    this install. | 
setExtensionParams
public void setExtensionParams (PersistableBundle extensionParams)
Optionally called to provide a set of parameters to pass directly to the developer
 verification service provider (a.k.a., the verifier) to provide any additional context
 regarding the pending verification. The structure of this bundle will be specific to the
 implementation of the verifier, so callers can determine the verifier by calling
 PackageInstaller.getDeveloperVerificationServiceProvider().
| Parameters | |
|---|---|
| extensionParams | PersistableBundle: This value cannot benull. | 
setInstallLocation
public void setInstallLocation (int installLocation)
Provide value of PackageInfo.installLocation, which may be used
 to determine where the app will be staged. Defaults to
 PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY.
| Parameters | |
|---|---|
| installLocation | int | 
setInstallReason
public void setInstallReason (int installReason)
Set the reason for installing this package.
The install reason should be a pre-defined integer. The behavior is undefined if other values are used.
| Parameters | |
|---|---|
| installReason | int: Value isPackageManager.INSTALL_REASON_UNKNOWN,PackageManager.INSTALL_REASON_POLICY,PackageManager.INSTALL_REASON_DEVICE_RESTORE,PackageManager.INSTALL_REASON_DEVICE_SETUP,PackageManager.INSTALL_REASON_USER, or android.content.pm.PackageManager.INSTALL_REASON_ROLLBACK | 
setInstallScenario
public void setInstallScenario (int installScenario)
Sets the install scenario for this session, which describes the expected user journey.
| Parameters | |
|---|---|
| installScenario | int: Value isPackageManager.INSTALL_SCENARIO_DEFAULT,PackageManager.INSTALL_SCENARIO_FAST,PackageManager.INSTALL_SCENARIO_BULK, orPackageManager.INSTALL_SCENARIO_BULK_SECONDARY | 
setInstallerPackageName
public void setInstallerPackageName (String installerPackageName)
Set the installer package for the app.
 By default this is the app that created the PackageInstaller object.
 Note: Only applications with Manifest.permission.INSTALL_PACKAGES
 permission are allowed to set an installer that is not the caller's own installer
 package name, otherwise it will cause a SecurityException when creating the
 install session.
| Parameters | |
|---|---|
| installerPackageName | String: The name of the installer package, its length must be less
                            than255, otherwise it will be invalid.
 This value may benull. | 
setMultiPackage
public void setMultiPackage ()
Set this session to be the parent of a multi-package install. A multi-package install session contains no APKs and only references other install sessions via ID. When a multi-package session is committed, all of its children are committed to the system in an atomic manner. If any children fail to install, all of them do, including the multi-package session.
setOriginatingUid
public void setOriginatingUid (int originatingUid)
Sets the UID that initiated the package installation. This is informational and may be used as a signal for anti-malware purposes.
| Parameters | |
|---|---|
| originatingUid | int | 
setOriginatingUri
public void setOriginatingUri (Uri originatingUri)
Optionally set the URI where this package was downloaded from. This is informational and may be used as a signal for anti-malware purposes.
| Parameters | |
|---|---|
| originatingUri | Uri: This value may benull. | 
See also:
setPackageSource
public void setPackageSource (int packageSource)
Optionally indicate the package source of the app being installed. This is
 informational and may be used as a signal by the system.
 An installer should specify PackageInstaller.PACKAGE_SOURCE_OTHER if no other package source
 constant adequately reflects the source for this session.
 The default value is PackageInstaller.PACKAGE_SOURCE_UNSPECIFIED.
setPermissionState
public PackageInstaller.SessionParams setPermissionState (String permissionName, int state)
Sets the state of permissions for the package at installation.
Granting any runtime permissions require theandroid.Manifest.permission#INSTALL_GRANT_RUNTIME_PERMISSIONS
 permission to be held by the caller. Revoking runtime
 permissions is not allowed, even during app update sessions.
 
 Holders without the permission are allowed to change the following special permissions:
 
 On platform UPSIDE_DOWN_CAKE:
 
 Install time permissions, which cannot be revoked by the user, cannot be changed by the
 installer.
 
 See 
 Permissions on Android for more information.
    | Parameters | |
|---|---|
| permissionName | String: The permission to change state for.
 This value cannot benull. | 
| state | int: EitherPERMISSION_STATE_DEFAULT,PERMISSION_STATE_GRANTED,
                       orPERMISSION_STATE_DENIEDto set the permission to.
 Value isPERMISSION_STATE_DEFAULT,PERMISSION_STATE_GRANTED, orPERMISSION_STATE_DENIED | 
| Returns | |
|---|---|
| PackageInstaller.SessionParams | This object for easier chaining.
 This value cannot be null. | 
setReferrerUri
public void setReferrerUri (Uri referrerUri)
Optionally set the URI that referred you to install this package. This is informational and may be used as a signal for anti-malware purposes.
| Parameters | |
|---|---|
| referrerUri | Uri: This value may benull. | 
See also:
setRequestUpdateOwnership
public void setRequestUpdateOwnership (boolean enable)
Optionally indicate whether the package being installed needs the update ownership
 enforcement. Once the update ownership enforcement is enabled, the other installers
 will need the user action to update the package even if the installers have been
 granted the INSTALL_PACKAGES
 permission. Default to false.
 The update ownership enforcement can only be enabled on initial installation. Set
 this to true on package update is a no-op.
 Note: To enable the update ownership enforcement, the installer must have the
 ENFORCE_UPDATE_OWNERSHIP
 permission.
 
 Requires Manifest.permission.ENFORCE_UPDATE_OWNERSHIP
| Parameters | |
|---|---|
| enable | boolean | 
setRequireUserAction
public void setRequireUserAction (int requireUserAction)
Optionally indicate whether user action should be required when the session is committed.
 Defaults to USER_ACTION_UNSPECIFIED unless otherwise set. When unspecified for
 installers using the
 REQUEST_INSTALL_PACKAGES
 permission will behave as if set to USER_ACTION_REQUIRED, and
 USER_ACTION_NOT_REQUIRED otherwise. When requireUserAction is set to
 USER_ACTION_REQUIRED, installers will receive a
 PackageInstaller.STATUS_PENDING_USER_ACTION callback once the session is committed, indicating
 that user action is required for the install to proceed.
 
 For installers that have been granted the
 REQUEST_INSTALL_PACKAGES
 permission, user action will not be required when all of the following conditions are
 met:
 
- requireUserActionis set to- USER_ACTION_NOT_REQUIRED.
- The app being installed targets:
- The installer is:
         - The update ownerof an existing version of the app (in other words, this install session is an app update) if the update ownership enforcement is enabled.
- The
             installer of recordof an existing version of the app (in other words, this install session is an app update) if the update ownership enforcement isn't enabled.
- Updating itself.
 
- The 
- The installer declares the
     UPDATE_PACKAGES_WITHOUT_USER_ACTIONpermission.
 Note: The target API level requirement will advance in future Android versions.
 Session owners should always be prepared to handle PackageInstaller.STATUS_PENDING_USER_ACTION.
| Parameters | |
|---|---|
| requireUserAction | int: whether user action should be required.
 Value isUSER_ACTION_UNSPECIFIED,USER_ACTION_REQUIRED, orUSER_ACTION_NOT_REQUIRED | 
setSize
public void setSize (long sizeBytes)
Optionally indicate the total size (in bytes) of all APKs that will be delivered in this session. The system may use this to ensure enough disk space exists before proceeding, or to estimate container size for installations living on external storage.
| Parameters | |
|---|---|
| sizeBytes | long | 
setUnarchiveId
public void setUnarchiveId (int unarchiveId)
Used to set the unarchive ID received as part of an
 Intent.ACTION_UNARCHIVE_PACKAGE.
 
The ID should be retrieved from the unarchive intent and passed into the session that's being created to unarchive the app in question. Used to link the unarchive intent and the install session to disambiguate.
| Parameters | |
|---|---|
| unarchiveId | int | 
setWhitelistedRestrictedPermissions
public void setWhitelistedRestrictedPermissions (Set<String> permissions)
Sets which restricted permissions to be allowlisted for the app. Allowlisting is not granting the permissions, rather it allows the app to hold permissions which are otherwise restricted. Allowlisting a non restricted permission has no effect.
 Permissions can be hard restricted which means that the app cannot hold
 them or soft restricted where the app can hold the permission but in a weaker
 form. Whether a permission is restricted or soft restricted
 depends on the permission declaration. Allowlisting a hard restricted permission
 allows the app to hold that permission and allowlisting a soft restricted
 permission allows the app to hold the permission in its full, unrestricted form.
 
Permissions can also be immutably restricted which means that the allowlist state of the permission can be determined only at install time and cannot be changed on updated or at a later point via the package manager APIs.
Initially, all restricted permissions are allowlisted but you can change
 which ones are allowlisted by calling this method or the corresponding ones
 on the PackageManager. Only soft or hard restricted permissions on the current
 Android version are supported and any invalid entries will be removed.
| Parameters | |
|---|---|
| permissions | Set: This value may benull. | 
writeToParcel
public void writeToParcel (Parcel dest, int flags)
Flatten this object in to a Parcel.
| Parameters | |
|---|---|
| dest | Parcel: The Parcel in which the object should be written.
 This value cannot benull. | 
| flags | int: Additional flags about how the object should be written.
 May be 0 orParcelable.PARCELABLE_WRITE_RETURN_VALUE.
 Value is either0or a combination ofParcelable.PARCELABLE_WRITE_RETURN_VALUE, and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES | 
