getApplicationInfo的坑
一般情况下我们通过PackageManager.GET_UNINSTALLED_PACKAGES来检查应用是否安装,且不论其本身存在的不正确性,自Android 4.2(API 17)以后,多账户的出现,其又新出现一些坑。现在Android 7.0(API 24)使用MATCH_UNINSTALLED_PACKAGES 将其替换。
问题描述
在做微信分享操作之前,应用内先对微信App进行一次判断是否安装,使用的方法:
public boolean checkApkExist(Context context, String packageName) {
try {
ApplicationInfo info = context.getPackageManager().getApplicationInfo(packageName,
PackageManager.GET_UNINSTALLED_PACKAGES);
if (info != null)
return true;
} catch (PackageManager.NameNotFoundException e) {

在Android开发中,通常使用getApplicationInfo结合PackageManager.GET_UNINSTALLED_PACKAGES检查应用是否安装。然而,自API 17引入多账户后,这种方法在Android 7.0(API 24)被MATCH_UNINSTALLED_PACKAGES取代。问题在于,当不同账户有不同安装状态的应用时,常规方法可能返回错误信息。解决方案是避免依赖这两个标志来判断,而是利用微信API自身的安装检查功能。
最低0.47元/天 解锁文章
1631

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



