在Android 11中,由于应用沙箱的限制,如果尝试使用packageManager.resolveActivity()来检查其他应用是否安装,可能会返回null。而解决此问题的方法是使用PackageManager.getPackageInfo()方法来获取应用程序的PackageInfo,并检查applicationInfo中的flags是否包含ApplicationInfo.FLAG_INSTALLED标志。以下是解决此问题的代码示例:
public boolean isPackageInstalled(Context context, String packageName) {
PackageManager pm = context.getPackageManager();
try {
PackageInfo info = pm.getPackageInfo(packageName, 0);
return (info.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) != 0;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
使用此方法来检查其他应用程序是否已安装,而不会出现packageManager.resolveActivity()返回null的问题。