使用 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/