缘起
前段时间,项目里有个~~(BUG)~~需求要判断当前设备是否为 32位。
代码
方式1:
import android.os.Process
// 判断是否为 64位
Process.is64Bit()
// 因为没有提供 Process.is32Bit() 方法,所以如果需要判断 32位的话,需要对 64位的判断结果进行取反
Process.is64Bit().not()
注意:使用此方式记得导入 android.os.Process 包。
限制:
Call requires API level 23,调用需要 API 级别 23,即 Android 6.0 及以上。
方式2:
Kotlin 代码
import android.os.Build
if (Build.SUPPORTED_64_BIT_ABIS.isNotEmpty()) {
// 64位
} else {
// 32位
}
Java 代码
if (Build.SUPPORTED_64_BIT_ABIS.length > 0) {
// 64位
} else {
// 32位
}
注意:记得导入 android.os.Build 包。
疑问解答
Q:通过查看源码,发现明明有 Build.SUPPORTED_32_BIT_ABIS
字段呀,为什么还要用 Build.SUPPORTED_64_BIT_ABIS
判断是否为 32位呢?
A:因为系统向下兼容呀,所以 64位的系统既支持64位的程序,又支持 32位的程序。所以捏,咱们不能通过 Build.SUPPORTED_32_BIT_ABIS.isNotEmpty()
来判断当前设备是否为 32位。
相关资料
How to detect android device is 64 bit or 32 bit processor?
安卓官方文档
免责声明:
以上两段代码中,方式1 笔者没有验证过。方式2 笔者使用公司的多台设备进行测试过。若读者遇到判断错误的情况,欢迎指出。