java - 如何检测安装了另一个特定的应用程序?
问题描述
我有一个具有两个不同版本(两个不同的包名称)的应用程序。一个是免费版本,另一个是付费版本。显然免费版总是在付费版之前安装。
我希望免费版本能够检测何时安装付费版本。我不能使用广播接收器,action.PACKAGE_ADDED
因为清单中不再允许这样做,这意味着它不能在后台运行,它只能在应用程序打开时运行。
解决方案
对于明显的隐私问题,您无法检测到其他应用程序的安装,但是,您可以检查该应用程序是否已安装在设备中并可以打开它。
要检查应用程序是否安装在设备中,请使用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()
推荐阅读
- jquery - 为什么 ajax 在移动设备上不像在桌面上那样工作?
- html - 将线性渐变添加到可滚动的 div
- android - 如何使用“Firestore”管道请求从同一集合中获取多个文档?
- python-2.7 - Boto3 + Python + AWS S3:如何从存储桶中的文件夹中获取最新文件
- kotlin - 如果模型为空,则不返回模型
- spring - 移动到目标系统之前的文件数据验证
- python - 将熊猫数据框转换为熊猫系列
- mongodb - 连接嵌套字段值(如果存在)
- android - onActivityResult() 将当前片段更改为上一个
- gstreamer - 我正在尝试在 VLC 媒体播放器上使用本地网络上的 gstreamer 流式传输 mp4 文件