121 lines
3.6 KiB
Java
Executable File
121 lines
3.6 KiB
Java
Executable File
// Copyright 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.ApplicationInfo;
|
|
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 shouldn't 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(context.getPackageName(), 0);
|
|
msg = "";
|
|
if (pi.versionCode > 0) {
|
|
msg = Integer.toString(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(context.getPackageName(), 0);
|
|
msg = pi.versionName;
|
|
} catch (NameNotFoundException e) {
|
|
Log.d(TAG, msg);
|
|
}
|
|
return msg;
|
|
}
|
|
|
|
@CalledByNative
|
|
public static String getPackageLabel(Context context) {
|
|
try {
|
|
PackageManager packageManager = context.getPackageManager();
|
|
ApplicationInfo appInfo = packageManager.getApplicationInfo(context.getPackageName(),
|
|
PackageManager.GET_META_DATA);
|
|
CharSequence label = packageManager.getApplicationLabel(appInfo);
|
|
return label != null ? label.toString() : "";
|
|
} catch (NameNotFoundException e) {
|
|
return "";
|
|
}
|
|
}
|
|
|
|
@CalledByNative
|
|
public static String getPackageName(Context context) {
|
|
String packageName = context != null ? context.getPackageName() : null;
|
|
return packageName != null ? packageName : "";
|
|
}
|
|
|
|
@CalledByNative
|
|
public static String getBuildType() {
|
|
return Build.TYPE;
|
|
}
|
|
|
|
@CalledByNative
|
|
public static int getSdkInt() {
|
|
return Build.VERSION.SDK_INT;
|
|
}
|
|
}
|