首页 > 解决方案 > 如何检测安装了另一个特定的应用程序?

问题描述

我有一个具有两个不同版本(两个不同的包名称)的应用程序。一个是免费版本,另一个是付费版本。显然免费版总是在付费版之前安装。

我希望免费版本能够检测何时安装付费版本。我不能使用广播接收器,action.PACKAGE_ADDED因为清单中不再允许这样做,这意味着它不能在后台运行,它只能在应用程序打开时运行。

标签: javaandroid

解决方案


对于明显的隐私问题,您无法检测到其他应用程序的安装,但是,您可以检查该应用程序是否已安装在设备中并可以打开它。

要检查应用程序是否安装在设备中,请使用PackageManager.getPackageInfo()as getPackageInfo("com.app.yourAppName", 0)。如果设备中安装了这样的应用程序,这将返回信息,如果NameNotFoundException未安装应用程序,则抛出一个。检查下面的代码:

Boolean isappInstalled() {
    try {
        pm.getPackageInfo("com.app.yourApp", 0);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}

在您的启动器活动中调用此函数onCreate(),然后执行您想要执行的操作。onStart()onResume()


推荐阅读