package com.dh.foundation.app;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.telephony.TelephonyManager;
import com.dh.foundation.utils.DLoggerUtils;
import com.dh.foundation.manager.FoundationManager;
/**
* 应用程序信息工具类
* Created By: Seal.Wu
* Date: 2015/8/27
* Time: 16:52
*/
public class ApplicationUtil {
private final static Context context = FoundationManager.getContext();
private static ApplicationInfo APPLICATION_INFO;
private static PackageInfo PACKAGE_INFO;
static {
initInfos();
}
private static void initInfos() {
try {
APPLICATION_INFO = context.getPackageManager()
.getApplicationInfo(context.getPackageName(),
PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
DLoggerUtils.e(e);
}
try {
PACKAGE_INFO = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
DLoggerUtils.e(e);
}
}
public static String getAppName()//获取应用名称
{
if (APPLICATION_INFO != null) {
int labelRes = APPLICATION_INFO.labelRes;
return labelRes != 0 ? context.getString(labelRes) : "未知应用";
} else {
initInfos();
if (APPLICATION_INFO != null) {
int labelRes = APPLICATION_INFO.labelRes;
return labelRes != 0 ? context.getString(labelRes) : "未知应用";
} else {
return "未知应用";
}
}
}
public static String getVersionName()//获取版本号
{
if (PACKAGE_INFO != null) {
return PACKAGE_INFO.versionName;
} else {
initInfos();
if (PACKAGE_INFO != null) {
return PACKAGE_INFO.versionName;
} else {
return "未知版本号";
}
}
}
public static String getPackageName()//获取包名
{
if (PACKAGE_INFO != null) {
return PACKAGE_INFO.packageName;
} else {
initInfos();
if (PACKAGE_INFO != null) {
return PACKAGE_INFO.packageName;
} else {
return "未知版本号";
}
}
}
public static int getVersionCode()//获取版本号(内部识别号)
{
if (PACKAGE_INFO != null) {
return PACKAGE_INFO.versionCode;
} else {
initInfos();
if (PACKAGE_INFO != null) {
return PACKAGE_INFO.versionCode;
} else {
return 0;
}
}
}
/**
* 获取应用程序icon
*/
public static int getApplicationIcon() {
if (APPLICATION_INFO != null) {
return APPLICATION_INFO.icon;
} else {
initInfos();
if (APPLICATION_INFO != null) {
return APPLICATION_INFO.icon;
} else {
return android.R.drawable.sym_def_app_icon;
}
}
}
/**
* 获取Application内的metadata的对应key的值(P: 无论是哪种类型的数据都可以获取,并最终返回String类型)
*/
public static String getApplicationInfoMetaData(String key) {
if (APPLICATION_INFO != null) {
return String.valueOf(APPLICATION_INFO.metaData.get(key));
} else {
initInfos();
if (APPLICATION_INFO != null) {
return String.valueOf(APPLICATION_INFO.metaData.get(key));
} else {
return null;
}
}
}
public static String getActivityMetaData(Activity activity, String key) {
ActivityInfo info = null;
try {
info = activity.getPackageManager()
.getActivityInfo(getComponentName(activity),
PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
DLoggerUtils.e(e);
}
if (info != null) {
return String.valueOf(info.metaData.get(key));
} else {
return null;
}
}
public static ComponentName getComponentName(Context context) {
return new ComponentName(context, context.getClass());
}
/**
* 获取唯一设备号
* */
public static String getIMEI() {
TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
if (null == telephonyManager.getDeviceId()) {
return "未知";
}
return telephonyManager.getDeviceId();
}
}