Most visited

Recently visited

Added in API level 21

PackageInstaller

public class PackageInstaller
extends Object

java.lang.Object
   ↳ android.content.pm.PackageInstaller


提供在设备上安装,升级和删除应用程序的功能。 这包括支持将应用程序打包为单个“单一”APK或将应用程序打包为多个“分割”APK。

应用程序通过任何应用程序可以创建的PackageInstaller.Session进行安装。 一旦创建会话,安装程序就可以将一个或多个APK放入到位,直到它决定提交或销毁会话。 提交可能需要用户干预才能完成安装。

会话可以安装全新的应用程序,升级现有的应用程序,或添加新的拆分到现有的应用程序。

打包为多个拆分APK的应用始终由单个“基本”APK( null拆分名称)和零个或多个“拆分”APK(具有唯一拆分名称)组成。 只要满足以下约束,这些APK的任何子集都可以安装在一起:

Summary

Nested classes

class PackageInstaller.Session

正在积极安装的安装。

class PackageInstaller.SessionCallback

观察会话生命周期的事件。

class PackageInstaller.SessionInfo

活动安装会话的详细信息。

class PackageInstaller.SessionParams

用于创建新的参数PackageInstaller.Session

Constants

String ACTION_SESSION_DETAILS

活动操作:显示有关特定安装会话的详细信息。

String EXTRA_OTHER_PACKAGE_NAME

与状态相关的另一个软件包名称。

String EXTRA_PACKAGE_NAME

与操作一起使用的软件包名称。

String EXTRA_SESSION_ID

一个操作正在使用的整数会话ID。

String EXTRA_STATUS

操作的当前状态。

String EXTRA_STATUS_MESSAGE

状态的详细字符串表示,包括对调试有用的原始详细信息。

String EXTRA_STORAGE_PATH

与状态相关的存储路径。

int STATUS_FAILURE

该操作以通用方式失败。

int STATUS_FAILURE_ABORTED

操作失败,因为它被积极中止。

int STATUS_FAILURE_BLOCKED

该操作因为被阻止而失败。

int STATUS_FAILURE_CONFLICT

操作失败,因为它与设备上已安装的另一个软件包冲突(或不一致)。

int STATUS_FAILURE_INCOMPATIBLE

操作失败是因为它基本上与此设备不兼容。

int STATUS_FAILURE_INVALID

操作失败,因为一个或多个APK无效。

int STATUS_FAILURE_STORAGE

由于存储问题,操作失败。

int STATUS_PENDING_USER_ACTION

用户操作当前需要继续。

int STATUS_SUCCESS

操作成功。

Public methods

void abandonSession(int sessionId)

完全放弃给定的会话,销毁所有分阶段的数据并使其无效。

int createSession(PackageInstaller.SessionParams params)

使用给定的参数创建一个新的会话,返回一个代表会话的唯一ID。

List<PackageInstaller.SessionInfo> getAllSessions()

无论安装程序如何,都返回所有已知安装会话的列表。

List<PackageInstaller.SessionInfo> getMySessions()

返回调用应用程序拥有的所有已知安装会话的列表。

PackageInstaller.SessionInfo getSessionInfo(int sessionId)

返回特定会话的详细信息。

PackageInstaller.Session openSession(int sessionId)

打开一个现有的会话来主动执行工作。

void registerSessionCallback(PackageInstaller.SessionCallback callback, Handler handler)

注册以观看会话生命周期事件。

void registerSessionCallback(PackageInstaller.SessionCallback callback)

注册以观看会话生命周期事件。

void uninstall(String packageName, IntentSender statusReceiver)

卸载给定的软件包,将其从设备上彻底删除。

void unregisterSessionCallback(PackageInstaller.SessionCallback callback)

取消注册以前注册的回叫。

void updateSessionAppIcon(int sessionId, Bitmap appIcon)

更新代表在特定会话中安装的应用程序的图标。

void updateSessionAppLabel(int sessionId, CharSequence appLabel)

更新表示正在特定会话中安装的应用程序的标签。

Inherited methods

From class java.lang.Object

Constants

ACTION_SESSION_DETAILS

Added in API level 21
String ACTION_SESSION_DETAILS

活动操作:显示有关特定安装会话的详细信息。 这可能表现为诸如暂停,恢复或取消等操作。

这应该始终限于拥有会话的安装程序包。 客户应该使用createDetailsIntent()正确地建立这个意图。

在某些情况下,匹配的活动可能不存在,因此请确保您采取防范措施。

显示详细信息的会话在 EXTRA_SESSION_ID定义。

常量值:“android.content.pm.action.SESSION_DETAILS”

EXTRA_OTHER_PACKAGE_NAME

Added in API level 21
String EXTRA_OTHER_PACKAGE_NAME

与状态相关的另一个软件包名称。 这通常是导致操作失败的包。

也可以看看:

常量值:“android.content.pm.extra.OTHER_PACKAGE_NAME”

EXTRA_PACKAGE_NAME

Added in API level 21
String EXTRA_PACKAGE_NAME

与操作一起使用的软件包名称。

也可以看看:

常量值:“android.content.pm.extra.PACKAGE_NAME”

EXTRA_SESSION_ID

Added in API level 21
String EXTRA_SESSION_ID

一个操作正在使用的整数会话ID。

也可以看看:

常量值:“android.content.pm.extra.SESSION_ID”

EXTRA_STATUS

Added in API level 21
String EXTRA_STATUS

操作的当前状态。 将是一个STATUS_PENDING_USER_ACTIONSTATUS_SUCCESSSTATUS_FAILURESTATUS_FAILURE_ABORTEDSTATUS_FAILURE_BLOCKEDSTATUS_FAILURE_CONFLICTSTATUS_FAILURE_INCOMPATIBLESTATUS_FAILURE_INVALID ,或STATUS_FAILURE_STORAGE

有关状态的更多信息可以通过额外的附加功能获得; 详细信息请参阅个人状态文档。

也可以看看:

常量值:“android.content.pm.extra.STATUS”

EXTRA_STATUS_MESSAGE

Added in API level 21
String EXTRA_STATUS_MESSAGE

状态的详细字符串表示,包括对调试有用的原始详细信息。

也可以看看:

常量值:“android.content.pm.extra.STATUS_MESSAGE”

EXTRA_STORAGE_PATH

Added in API level 21
String EXTRA_STORAGE_PATH

与状态相关的存储路径。

也可以看看:

常量值:“android.content.pm.extra.STORAGE_PATH”

STATUS_FAILURE

Added in API level 21
int STATUS_FAILURE

该操作以通用方式失败。 系统将一直试图提供更具体的失败原因,但在一些极少数情况下可能会交付。

也可以看看:

常数值:1(0x00000001)

STATUS_FAILURE_ABORTED

Added in API level 21
int STATUS_FAILURE_ABORTED

操作失败,因为它被积极中止。 例如,用户主动拒绝请求的权限,或会话被放弃。

也可以看看:

常量值:3(0x00000003)

STATUS_FAILURE_BLOCKED

Added in API level 21
int STATUS_FAILURE_BLOCKED

该操作因为被阻止而失败。 例如,设备策略可能会阻止该操作,程序包验证程序可能已经阻止了该操作,或者该核心系统操作可能需要应用程序。

结果也可能包含 EXTRA_OTHER_PACKAGE_NAME ,而特定程序包会阻止安装。

也可以看看:

常量值:2(0x00000002)

STATUS_FAILURE_CONFLICT

Added in API level 21
int STATUS_FAILURE_CONFLICT

操作失败,因为它与设备上已安装的另一个软件包冲突(或不一致)。 例如,现有权限,不兼容证书等。用户可能能够卸载另一个应用程序来解决问题。

结果也可能包含 EXTRA_OTHER_PACKAGE_NAME ,并将特定程序包标识为冲突的原因。

也可以看看:

常量值:5(0x00000005)

STATUS_FAILURE_INCOMPATIBLE

Added in API level 21
int STATUS_FAILURE_INCOMPATIBLE

操作失败是因为它基本上与此设备不兼容。 例如,应用程序可能需要一个不存在的硬件功能,它可能缺少设备支持的ABI的本机代码,或者它需要更新的SDK版本等。

也可以看看:

常量值:7(0x00000007)

STATUS_FAILURE_INVALID

Added in API level 21
int STATUS_FAILURE_INVALID

操作失败,因为一个或多个APK无效。 例如,他们可能是畸形的,腐败的,不正确的签名,不匹配等。

也可以看看:

常量值:4(0x00000004)

STATUS_FAILURE_STORAGE

Added in API level 21
int STATUS_FAILURE_STORAGE

由于存储问题,操作失败。 例如,设备可能空间不足,或者外部媒体可能不可用。 用户可能能够帮助释放空间或插入不同的外部媒体。

结果也可能包含 EXTRA_STORAGE_PATH以及导致失败的存储设备的路径。

也可以看看:

常数值:6(0x00000006)

STATUS_PENDING_USER_ACTION

Added in API level 21
int STATUS_PENDING_USER_ACTION

用户操作当前需要继续。 您可以启动EXTRA_INTENT所描述的意图活动,让用户参与并继续。

如果用户正在主动使用您的应用,您可以选择立即启动该意图。 否则,您应该在启动之前使用通知来引导用户回到您的应用中。

也可以看看:

常量值:-1(0xffffffff)

STATUS_SUCCESS

Added in API level 21
int STATUS_SUCCESS

操作成功。

常量值:0(0x00000000)

Public methods

abandonSession

Added in API level 21
void abandonSession (int sessionId)

完全放弃给定的会话,销毁所有分阶段的数据并使其无效。 被遗弃的会话将作为失败报告给PackageInstaller.SessionCallback听众。 这相当于打开会话并致电abandon()

Parameters
sessionId int
Throws
SecurityException when the caller does not own the session, or the session is invalid.

createSession

Added in API level 21
int createSession (PackageInstaller.SessionParams params)

使用给定的参数创建一个新的会话,返回一个代表会话的唯一ID。 一旦创建,会话可以在多个设备引导中多次打开。

系统可能会在合理的时间段内(通常为一天的时间)自动销毁尚未完成(承诺或放弃)的会话。

Parameters
params PackageInstaller.SessionParams
Returns
int positive, non-zero unique ID that represents the created session. This ID remains consistent across device reboots until the session is finalized. IDs are not reused during a given boot.
Throws
IOException if parameters were unsatisfiable, such as lack of disk space or unavailable media.
SecurityException when installation services are unavailable, such as when called from a restricted user.
IllegalArgumentException when PackageInstaller.SessionParams is invalid.

getAllSessions

Added in API level 21
List<PackageInstaller.SessionInfo> getAllSessions ()

无论安装程序如何,都返回所有已知安装会话的列表。

Returns
List<PackageInstaller.SessionInfo>

getMySessions

Added in API level 21
List<PackageInstaller.SessionInfo> getMySessions ()

返回调用应用程序拥有的所有已知安装会话的列表。

Returns
List<PackageInstaller.SessionInfo>

getSessionInfo

Added in API level 21
PackageInstaller.SessionInfo getSessionInfo (int sessionId)

返回特定会话的详细信息。 不需要特殊的权限来检索这些细节。

Parameters
sessionId int
Returns
PackageInstaller.SessionInfo details for the requested session, or null if the session does not exist.

openSession

Added in API level 21
PackageInstaller.Session openSession (int sessionId)

打开一个现有的会话来主动执行工作。 要成功,调用者必须是安装会话的所有者。

Parameters
sessionId int
Returns
PackageInstaller.Session
Throws
IOException if parameters were unsatisfiable, such as lack of disk space or unavailable media.
SecurityException when the caller does not own the session, or the session is invalid.

registerSessionCallback

Added in API level 21
void registerSessionCallback (PackageInstaller.SessionCallback callback, 
                Handler handler)

注册以观看会话生命周期事件。 不需要特殊的权限来监视这些事件。

Parameters
callback PackageInstaller.SessionCallback
handler Handler: to dispatch callback events through, otherwise uses calling thread.

registerSessionCallback

Added in API level 21
void registerSessionCallback (PackageInstaller.SessionCallback callback)

注册以观看会话生命周期事件。 不需要特殊的权限来监视这些事件。

Parameters
callback PackageInstaller.SessionCallback

uninstall

Added in API level 21
void uninstall (String packageName, 
                IntentSender statusReceiver)

卸载给定的软件包,将其从设备上彻底删除。 此方法仅适用于包的当前“记录安装程序”。

Parameters
packageName String
statusReceiver IntentSender

unregisterSessionCallback

Added in API level 21
void unregisterSessionCallback (PackageInstaller.SessionCallback callback)

取消注册以前注册的回叫。

Parameters
callback PackageInstaller.SessionCallback

updateSessionAppIcon

Added in API level 21
void updateSessionAppIcon (int sessionId, 
                Bitmap appIcon)

更新代表在特定会话中安装的应用程序的图标。 这两个维度应该大致为getLauncherLargeIconSize()

Parameters
sessionId int
appIcon Bitmap
Throws
SecurityException when the caller does not own the session, or the session is invalid.

updateSessionAppLabel

Added in API level 21
void updateSessionAppLabel (int sessionId, 
                CharSequence appLabel)

更新表示正在特定会话中安装的应用程序的标签。

Parameters
sessionId int
appLabel CharSequence
Throws
SecurityException when the caller does not own the session, or the session is invalid.

Hooray!