public class BuildInfo {
public static String getVersionName(Context context) {
try {
PackageInfo pInfo = context.getPackageManager().getPackageInfo(
context.getPackageName(), PackageManager.GET_META_DATA);
if (pInfo != null) {
return pInfo.versionName;
}
} catch (NameNotFoundException e) {
Log.w("getVersionName()", Log.getStackTraceString(e));
}
return "";
}
public static boolean isDebuggable(Context context) {
try {
PackageInfo pInfo = context.getPackageManager().getPackageInfo(
context.getPackageName(), PackageManager.GET_META_DATA);
if (pInfo != null) {
if ( 0 != (pInfo.applicationInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE)) {
return true;
}
}
} catch (NameNotFoundException e) {
Log.w("isDebuggable()", Log.getStackTraceString(e));
}
return false;
}
/*
* add macaddress to default id to take care of those duplicates...
*/
public static String getAndroidID(Context context) {
String id = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
if(id!=null) {
PackageManager pm = context.getPackageManager();
if(PackageManager.PERMISSION_GRANTED ==
pm.checkPermission(android.Manifest.permission.ACCESS_WIFI_STATE, context.getPackageName())) {
WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if(wm!=null) {
id = String.format("%s-%s", id, wm.getConnectionInfo().getMacAddress());
}
}
}
return id;
}
public static String getBuildInfo() { // minimal info for 1.5 support
final String buildInfo = String.format("AndroidVersion= %s Product= %s ID= %s Model= %s",
android.os.Build.VERSION.RELEASE, android.os.Build.PRODUCT, android.os.Build.ID, android.os.Build.MODEL);
return buildInfo;
}
}
public class BuiltTestActivity extends Activity{
private static final String TAG = "BuiltTestActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
String versionName = BuildInfo.getVersionName(this);
Log.i(TAG, versionName);
String androidId = BuildInfo.getAndroidID(this);
Log.i(TAG, androidId);
String buildInfo = BuildInfo.getBuildInfo();
Log.i(TAG, buildInfo);
boolean isDebuggable = BuildInfo.isDebuggable(this);
if (isDebuggable) {
Log.i(TAG, "Debuggable true");
}else {
Log.i(TAG, "Debuggable false");
}
}
}
12-15 09:55:07.931: I/BuiltTestActivity(28656): 1.0
12-15 09:55:07.935: I/BuiltTestActivity(28656): f09854aa124dc3e6
12-15 09:55:07.935: I/BuiltTestActivity(28656): AndroidVersion= 2.3.1 Product= meizu_m9 ID= GINGERBREAD Model= m9
12-15 09:55:07.935: I/BuiltTestActivity(28656): Debuggable false
备注:
public static String getBuildInfo() { // minimal info for 1.5 support
final String buildInfo = String.format("AndroidVersion= %s Product= %s ID= %s Model= %s",
android.os.Build.VERSION.RELEASE, android.os.Build.PRODUCT, android.os.Build.ID, android.os.Build.MODEL);
return buildInfo;
}
注意这种格式化输出信息