context.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);异常处理
1.检测是否已安装了指定包名的第三方app

通过上面代码可以去判断当前设备是否已经安装了该包名的第三方app。如果不抛异常,说明这设备已经安装了。如果未安装,就一定会抛异常。
但是,发现,在android11以及更高版本的手机中,即使已经安装了该包名的app,也仍然会抛异常: android.content.pm.PackageManager$NameNotFoundException
2.解决方案
方案1
在app的AndroidManifest.xml中添加如下配置
使用方案1的方式可能导致编译失败:Missing ‘package’ key attribute on element package at AndroidManifest.xml,那是因为gradle版本低的话导致的。可以通过升级gradle版本解决。

方案2
在app的AndroidManifest.xml中添加如下配置
android:name="android.permission.QUERY_ALL_PACKAGES"
如有疑问欢迎留言~~~~~~~~~
本文探讨了在Android11及以上版本中,通过context.getPackageManager().getApplicationInfo()方法检查第三方应用安装状态时遇到的异常问题。介绍了两种解决PackageManager$NameNotFoundException的方法,并提到了可能遇到的编译错误及其解决方案。
877

被折叠的 条评论
为什么被折叠?



