今天,忽然想要将之前经常使用 的Package 信息工具类封装一下,所以,在这里给大家提供一下子
/**
* kotlin 版本的 包管理器
* 注意: 此包管理器只是截取 Android 中包管理器的常用方法进行封装的
*/
class PackageUtils {
companion object {
var packageInfo: PackageInfo? = null
fun getPackageInfo(context: Context): PackageInfo {
if (packageInfo == null) {
val pm = context?.packageManager
packageInfo = pm?.getPackageInfo(context?.packageName, 0) as PackageInfo
}
return packageInfo as PackageInfo
}
/**
* 获取应用的版本号
*/
@RequiresApi(Build.VERSION_CODES.P)
fun getVersionCode(context: Context): Long {
return getPackageInfo(context).longVersionCode
}
/**
* 获取应用的版本名称
*/
fun getVersionName(context: Context): String {
return getPackageInfo(context).versionName
}
/**
* 获取Activity 的信息的集合 可以从 ActivityInfo 获取 到该 Activity 的信息,如 theme 主题 ,lable 图标等
*/
fun getActivityInfos(context: Context): Array<ActivityInfo> {
return getPackageInfo(context).activities
}
/**
* 获取 application 的应用信息,包括这个 app 的 application 标签下的所有的内容
*/
fun getApplicationInfo(context: Context): ApplicationInfo {
return getPackageInfo(context).applicationInfo
}
/**
* 获取授权的权限的集合
*/
fun getRequestedPermissions(context: Context): Array<String> {
return getPackageInfo(context).requestedPermissions
}
/**
* 获取此应用权限的集合
*/
fun getPermissions(context: Context): Array<PermissionInfo> {
return getPackageInfo(context).permissions
}
}
}