如何通过编程方式获取Android设备中的设备(AOSP)Build Number?

Ami*_*mar 15 android version-numbering

在Android应用程序中,如何以编程方式获取系统设置 - >关于平板电脑 - >内部版本号中显示的主机设备的内部版本号,以便在Java Android应用程序中使用?

平板电脑上的系统设置版本号

目前,我正在使用"android.os.Build".

Sil*_*ler 18

检查此代码..

Build.FINGERPRINT你将得到Build Number的设备.

String mString = "";

    mString.concat("VERSION.RELEASE {" + Build.VERSION.RELEASE + "}");
    mString.concat("\nVERSION.INCREMENTAL {" + Build.VERSION.INCREMENTAL + "}");
    mString.concat("\nVERSION.SDK {" + Build.VERSION.SDK + "}");
    mString.concat("\nBOARD {" + Build.BOARD + "}");
    mString.concat("\nBRAND {" + Build.BRAND + "}");
    mString.concat("\nDEVICE {" + Build.DEVICE + "}");
    mString.concat("\nFINGERPRINT {" + Build.FINGERPRINT + "}");
    mString.concat("\nHOST {" + Build.HOST + "}");
    mString.concat("\nID {" + Build.ID + "}");

    ((TextView) findViewById(R.id.textView1)).setText(mString);
Run Code Online (Sandbox Code Playgroud)

我的设备内部版本号:

我的设备内部版本号

FINGERPRINT 通过上面的代码返回

在此输入图像描述


pre*_*rak 6

要仅获取设置中“关于设备”中显示的内部版本号值,我们可以使用以下静态方法:

/**
 * This method returns Build Number of the device from the OS Build fingerprint
 * @return osBuildNumber - human entered name of the device
 */
public static String getOSBuildNumber() {
    String osBuildNumber = Build.FINGERPRINT;  //"google/shamu/shamu:5.1.1/LMY48Y/2364368:user/release-keys”
    final String forwardSlash = "/";
    String osReleaseVersion = Build.VERSION.RELEASE + forwardSlash;
    try {
        osBuildNumber = osBuildNumber.substring(osBuildNumber.indexOf(osReleaseVersion));  //"5.1.1/LMY48Y/2364368:user/release-keys”
        osBuildNumber = osBuildNumber.replace(osReleaseVersion, "");  //"LMY48Y/2364368:user/release-keys”
        osBuildNumber = osBuildNumber.substring(0, osBuildNumber.indexOf(forwardSlash)); //"LMY48Y"
    } catch (Exception e) {
        Log.e("getOSBuildNumber", "Exception while parsing - " + e.getMessage());
    }

    return osBuildNumber;
}
Run Code Online (Sandbox Code Playgroud)

这将只返回内部版本号的确切值。请记住,Android SDK 禁止这样做。检查 BUILD 类中的以下代码段:

/** A string that uniquely identifies this build.  Do not attempt to parse this value. */
public static final String FINGERPRINT = deriveFingerprint();

/**
 * Some devices split the fingerprint components between multiple
 * partitions, so we might derive the fingerprint at runtime.
 */
private static String deriveFingerprint() {
    String finger = SystemProperties.get("ro.build.fingerprint");
    if (TextUtils.isEmpty(finger)) {
        finger = getString("ro.product.brand") + '/' +
                getString("ro.product.name") + '/' +
                getString("ro.product.device") + ':' +
                getString("ro.build.version.release") + '/' +
                getString("ro.build.id") + '/' +
                getString("ro.build.version.incremental") + ':' +
                getString("ro.build.type") + '/' +
                getString("ro.build.tags");
    }
    return finger;
}
Run Code Online (Sandbox Code Playgroud)

上述方法只是对“deriveFingerprint()”方法中提供的数据进行逆向工程。


Nur*_*din 6

我曾经String Build_Number = Build.DISPLAY;在电话设置中获得内部版本号


pet*_*tey 5

要获取此值,请使用Build.DISPLAY。以下是 Verizon Note 2 的示例(android 4.4.2 上的 SCH-I605):KOT49H.I605VRUFND7

要求:API 3 或更高版本。