android 获取build,关于版本编号:如何以编程方式获取Android设备中的设备(AOSP)Build Number?...

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

025b26e68aa6817d9d871427b8d0e780.png

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

为什么男人会对这个问题投票? 告诉我原因..

这不是一个重复的问题.build / version是不同的。

@payeli它不重复..阿米特库马尔。 我同意你的看法

是的@CapDroid请帮忙。

@payeli我检查了所有问题..但他没有得到他想要的完美答案..不要去问题标题。

检查此代码..

在Build.FINGERPRINT中,您将获得设备的Build Number。

String mString ="";

mString.concat("VERSION.RELEASE {" + Build.VERSION.RELEASE +"}");

mString.concat("

VERSION.INCREMENTAL {" + Build.VERSION.INCREMENTAL +"}");

mString.concat("

VERSION.SDK {" + Build.VERSION.SDK +"}");

mString.concat("

BOARD {" + Build.BOARD +"}");

mString.concat("

BRAND {" + Build.BRAND +"}");

mString.concat("

DEVICE {" + Build.DEVICE +"}");

mString.concat("

FINGERPRINT {" + Build.FINGERPRINT +"}");

mString.concat("

HOST {" + Build.HOST +"}");

mString.concat("

ID {" + Build.ID +"}");

((TextView) findViewById(R.id.textView1)).setText(mString);

我的设备内部版本号:

31a8b9de6b8a424add18ef3afc4cfe77.png

FINGERPRINT返回上面的代码

fede7ad91e6fd8e1d596ed4e5f9c1f05.png

+1很好的答案..

@SilentKiller谢谢

mString = mString.concat("VERSION.RELEASE {"+ Build.VERSION.RELEASE +"}");[...]

我也试图获取内部版本号,并且设置中显示的值与Build.FINGERPRINT完全不匹配

@takluiper你正在检查哪个操作系统版本?

@SilentKiller我用两个不同的设备进行了测试,其中一个设备的值是正确的,但在另一个设备中,这个值根本不匹配。 Android版的最后一个是4.4

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

要求:API 3或更高版本。

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

/**

* 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;

}

这将只返回构建号的确切值。请记住,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;

}

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

我希望它返回你想要的相同值。

String build_number = Build.FINGERPRINT;

System.out.println("Build Number" + build_number);

Build.FINGERPRINT不返回内部版本号

我正在......你在测试哪个设备?

它不会返回设置中的相同值,但它是内部版本号...

我使用String Build_Number = Build.DISPLAY;来获取在电话设置中显示的内部版本号

Log.i("TAG","SERIAL:" + Build.SERIAL);

Log.i("TAG","MODEL:" + Build.MODEL);

Log.i("TAG","ID:" + Build.ID);

Log.i("TAG","Manufacture:" + Build.MANUFACTURER);

Log.i("TAG","brand:" + Build.BRAND);

Log.i("TAG","type:" + Build.TYPE);

Log.i("TAG","user:" + Build.USER);

Log.i("TAG","BASE:" + Build.VERSION_CODES.BASE);

Log.i("TAG","INCREMENTAL" + Build.VERSION.INCREMENTAL);

Log.i("TAG","SDK " + Build.VERSION.SDK);

Log.i("TAG","BOARD:" + Build.BOARD);

Log.i("TAG","BRAND" + Build.BRAND);

Log.i("TAG","HOST" + Build.HOST);

Log.i("TAG","FINGERPRINT:"+Build.FINGERPRINT);

Log.i("TAG","Version Code:" + Build.VERSION.RELEASE);

他会工作的。

你想推断出什么?

使用Build.DISPLAY作为内部版本号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值