using Android.Content;
using Android.Content.PM;
using System.Linq;
// ReSharper disable once CheckNamespace
namespace System
{
public static class PackageManagerExtensions
{
///
/// 根据包名获取包信息
///
///
///
///
public static PackageInfo? GetPackageInfo(this PackageManager? pkgManager, string packageName)
{
if (pkgManager == null) return null;
try
{
var info = pkgManager.GetPackageInfo(packageName, 0);
return info;
}
catch (PackageManager.NameNotFoundException)
{
return null;
}
catch (Exception)
{
try
{
var packages = pkgManager.GetInstalledPackages(0);
return packages.FirstOrDefault(x => x.PackageName == packageName);
}
catch (Exception)
{
return null;
}
}
}
///
public static PackageInfo? GetPackageInfo(this Context context, string packageName) => GetPackageInfo(context.PackageManager, packageName);
}
}