package cn.ccsu.util;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Build;
public final class AndroidInfo {
private static final String EMULATOR_ID = "ffffffffffffffff";
public static CharSequence getApplicationLabel(Context context) {
try {
PackageManager pm = context.getPackageManager();
ApplicationInfo ai = pm.getApplicationInfo(
context.getPackageName(), 0);
return pm.getApplicationLabel(ai);
} catch (NameNotFoundException e) {
return "AnonDroid";
}
}
public static String getApplicationVersion(Context context) {
try {
PackageManager pm = context.getPackageManager();
return pm.getPackageInfo(context.getPackageName(), 0).versionName;
} catch (NameNotFoundException e) {
return "";
}
}
public static boolean isOnEmulator(Context context) {
if ("sdk".equals(Build.MODEL) && "sdk".equals(Build.PRODUCT)) {
return true;
}
return getUniqueDeviceID(context).equals(EMULATOR_ID);
}
public static String getDeviceModel() {
StringBuilder ret = new StringBuilder();
if ("sdk".equals(Build.MODEL) && "sdk".equals(Build.PRODUCT)) {
return "SDK Emulator";
}
ret.append(Build.MODEL).append(" [");
ret.append(Build.MANUFACTURER).append(" ");
ret.append(Build.PRODUCT).append("]");
return ret.toString();
}
public static String getOSVersion() {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.CUR_DEVELOPMENT) {
return "DEV";
}
return Build.VERSION.RELEASE;
}
public static String getUniqueDeviceID(Context context) {
ContentResolver contentResolver = context.getContentResolver();
String id = android.provider.Settings.System.getString(contentResolver,
android.provider.Settings.System.ANDROID_ID);
if (id == null) {
id = EMULATOR_ID; // running on emulator.
}
return id;
}
/**
* Build an HTTP User-Agent suitable enough to identify this application +
* version + handset
*/
public static String getUserAgent(Context context) {
StringBuilder ua = new StringBuilder();
ua.append(AndroidInfo.getApplicationLabel(context)).append("/");
ua.append(AndroidInfo.getApplicationVersion(context));
ua.append(" (Android ").append(AndroidInfo.getOSVersion());
ua.append("/").append(AndroidInfo.getDeviceModel()).append(")");
return ua.toString();
}
private AndroidInfo() {
/* prevent instantiation */
}
}