Index: base/android/java/org/chromium/base/BuildInfo.java |
diff --git a/base/android/java/org/chromium/base/BuildInfo.java b/base/android/java/org/chromium/base/BuildInfo.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..75748acd2f8bc3cbb51bdbcc60c67fb676d19463 |
--- /dev/null |
+++ b/base/android/java/org/chromium/base/BuildInfo.java |
@@ -0,0 +1,88 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.base; |
+ |
+import android.content.Context; |
+import android.content.pm.PackageInfo; |
+import android.content.pm.PackageManager; |
+import android.content.pm.PackageManager.NameNotFoundException; |
+import android.os.Build; |
+import android.util.Log; |
+ |
+/** |
+ * BuildInfo is a utility class providing easy access to {@link PackageInfo} |
+ * information. This is primarly of use for accessesing package information |
+ * from native code. |
+ */ |
+public class BuildInfo { |
+ private static final String TAG = "BuildInfo"; |
+ private static final int MAX_FINGERPRINT_LENGTH = 128; |
+ |
+ /** |
+ * BuildInfo is a static utility class and therefore should'nt be |
+ * instantiated. |
+ */ |
+ private BuildInfo() { |
+ } |
+ |
+ @CalledByNative |
+ public static String getDevice() { |
+ return Build.DEVICE; |
+ } |
+ |
+ @CalledByNative |
+ public static String getBrand() { |
+ return Build.BRAND; |
+ } |
+ |
+ @CalledByNative |
+ public static String getAndroidBuildId() { |
+ return Build.ID; |
+ } |
+ |
+ /** |
+ * @return The build fingerprint for the current Android install. The value is truncated to a |
+ * 128 characters as this is used for crash and UMA reporting, which should avoid huge |
+ * strings. |
+ */ |
+ @CalledByNative |
+ public static String getAndroidBuildFingerprint() { |
+ return Build.FINGERPRINT.substring( |
+ 0, Math.min(Build.FINGERPRINT.length(), MAX_FINGERPRINT_LENGTH)); |
+ } |
+ |
+ @CalledByNative |
+ public static String getDeviceModel() { |
+ return Build.MODEL; |
+ } |
+ |
+ @CalledByNative |
+ public static String getPackageVersionCode(Context context) { |
+ String msg = "versionCode not available."; |
+ try { |
+ PackageManager pm = context.getPackageManager(); |
+ PackageInfo pi = pm.getPackageInfo("com.android.chrome", 0); |
+ msg = "" + pi.versionCode; |
+ } catch (NameNotFoundException e) { |
+ Log.d(TAG, msg); |
+ } |
+ return msg; |
+ |
+ } |
+ |
+ @CalledByNative |
+ public static String getPackageVersionName(Context context) { |
+ String msg = "versionName not available"; |
+ try { |
+ PackageManager pm = context.getPackageManager(); |
+ PackageInfo pi = pm.getPackageInfo("com.android.chrome", 0); |
+ msg = pi.versionName; |
+ } catch (NameNotFoundException e) { |
+ Log.d(TAG, msg); |
+ } |
+ return msg; |
+ } |
+ |
+} |