两个意图有什么区别:Intent.ACTION_PACKAGE_REPLACED、Intent.ACTION_MY_PACKAGE_REPLACED?

问题描述 投票:0回答:1

在什么情况下应该使用它们? 例如,要在此包更新时触发包内的某些功能(在包的现有版本上安装),应该使用哪一个?仅使用一个 ACTION_MY_PACKAGE_REPLACED 就足够了吗?

官方文档对 Intent.ACTION_PACKAGE_REPLACED 的描述:

在 API 级别 3 中添加

公共静态最终字符串ACTION_PACKAGE_REPLACED

广播动作:新版本的应用程序包已发布 安装,替换以前的现有版本 安装。数据包含包的名称。

可能包含以下额外内容:包含整数 uid 的 EXTRA_UID 分配给新包。

这是一个受保护的意图,只能由系统发送。

常量值:“android.intent.action.PACKAGE_REPLACED”

Intent.ACTION_MY_PACKAGE_REPLACED的描述:

在 API 级别 12 中添加

公共静态最终字符串ACTION_MY_PACKAGE_REPLACED

广播操作:您的应用程序的新版本已安装 超过现有的。这仅发送到之前的应用程序 更换。它不包含任何附加数据;接收它,只需 为此操作使用意图过滤器。

这是一个受保护的意图,只能由系统发送。

常量值:“android.intent.action.MY_PACKAGE_REPLACED”

android android-intent
1个回答
0
投票

ACTION_MY_PACKAGE_REPLACED

 仅向刚刚更新的应用程序“广播”。
理论上,

ACTION_PACKAGE_REPLACED

 会广播到设备上正在侦听此类广播的任何应用程序。实际上,在 Android 8.0 及更高版本上,由于该广播不在“允许列表”中,因此您可能无法通过“清单”元素接收此类广播。
要在此软件包更新时触发软件包内的某些功能(在软件包的现有版本上安装),应该使用哪一个?仅使用一个 ACTION_MY_PACKAGE_REPLACED 就足够了吗?

是的。

© www.soinside.com 2019 - 2024. All rights reserved.