Android:收听应用安装/升级的广播消息

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

按照Lookout,我写了一个简单的应用程序,每当安装或升级每个应用程序时,它会收听广播消息. AFAIK有一些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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...