android - 在 Android 中收听应用程序安装/升级的广播消息

标签 android installation broadcastreceiver broadcast

使用 Lookout 应用程序 (https://play.google.com/store/apps/details?id=com.lookout),我看到每次安装或升级应用程序时,它都会自动扫描此应用程序以确保它是没有恶意。

跟随 Lookout,我编写了一个简单的应用程序,它在安装或升级每个应用程序时收听广播消息。据我所知,广播消息有一些类型的 IntentFilter,它是:

  • Intent.ACTION_PACKAGE_ADDED
  • Intent.ACTION_PACKAGE_CHANGED
  • Intent.ACTION_PACKAGE_INSTALL

我希望Intent.ACTION_PACKAGE_ADDED是答案但它是错误的(ACTION_PACKAGE_ADDED:设备上安装了一个新的应用程序包。数据包含包的名称。注意新安装的包不接收此广播。)而 ACTION_PACKAGE_INSTALL 已弃用。

谁能告诉我更好的方法?欢迎任何帮助。

最佳答案

如果您正在安装应用程序 A,设备上的所有其他应用程序将获得 Intent 应用程序 A 是新安装的应用程序,但不是 A 本身,因为它似乎没有任何用处。如果稍后安装或更改其他应用程序,现在 A 将收到广播。

如果您想了解您的应用的安装时间或其他应用的上次安装或更新时间,您可以随时使用 PackageManager:

PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo("app.package.name", 0);
String appFile = appInfo.sourceDir; 
long installed = new File(appFile).lastModified();

这里的app.package.name 是你想知道安装时间的应用的包名。如果您想将它用于您的应用,请传入您应用的包名称。

关于android - 在 Android 中收听应用程序安装/升级的广播消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10297149/

相关文章:

wix - MSI 文件使用的压缩方法是什么?

android - 我应该使用 android : process =":remote" in my receiver?

android - Intent PACKAGE_ADDED 未注册

android - 如何使用 ndk-gdb 调试 native 代码

c# - 安卓 Xamarin C# : Https with ServiceStack and self signed certificates

android - 我需要为 Android Asset Studio 的图标提供积分吗?

android - 从 Crashlytics 下载 IPA/APK

windows - 从以管理员身份运行的 Inno Setup 安装程序为当前登录的用户安装应用程序

python - 用我的项目创建 Python pip 包

java - Android SMS 广播接收器不起作用