使用 android.os.Build
Android 系统在 android.os.Build 类中预置了大量设备信息,获取品牌信息主要用到以下几个字段:

| 字段名 | 类型 | 说明 |
|---|---|---|
BRAND |
String |
设备品牌,通常是小写字母,如 "samsung", "xiaomi", "huawei"。 |
MANUFACTURER |
String |
制造商,通常是品牌的全称,如 "Samsung", "Xiaomi", "HUAWEI"。 |
MODEL |
String |
设备型号,如 "SM-G991B", "Redmi K50"。 |
PRODUCT |
String |
产品名称,通常与品牌和型号相关,如 "a52q", "lmi"。 |
DEVICE |
String |
设备代号,通常用于开发,如 "a52q", "lmi"。 |
HARDWARE |
String |
硬件名称,如 "qcom", "mtk"。 |
BOARD |
String |
主板名称。 |
FINGERPRINT |
String |
设备的唯一指纹,由多个部分拼接而成,非常详细。 |
推荐使用 MANUFACTURER,因为它返回的是可读性更好的品牌全称(首字母大写),而 BRAND 通常是用于系统内部的小写标识。
在 Activity 或 Fragment 中直接获取(最简单)
这是最直接的方法,适用于在 Activity、Service 或任何可以直接获取 Context 的地方。
import android.os.Build;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView brandTextView = findViewById(R.id.brandTextView);
// 获取制造商(推荐使用)
String manufacturer = Build.MANUFACTURER;
// 获取品牌标识
String brand = Build.BRAND;
// 获取设备型号
String model = Build.MODEL;
// 将信息显示在界面上
String info = "制造商: " + manufacturer + "\n" +
"品牌: " + brand + "\n" +
"型号: " + model;
brandTextView.setText(info);
}
}
对应的 XML 布局文件 (activity_main.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/brandTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_gravity="center_horizontal"/>
</LinearLayout>
创建一个工具类(更规范、更推荐)
为了代码的复用性和整洁性,最好将获取设备信息的功能封装到一个工具类中。

创建 DeviceUtils.java 工具类
import android.os.Build;
public class DeviceUtils {
// 私有构造方法,防止被实例化
private DeviceUtils() {
throw new UnsupportedOperationException("Cannot be instantiated");
}
/**
* 获取设备制造商
* @return 制造商名称,如 "Samsung", "Xiaomi"
*/
public static String getManufacturer() {
return Build.MANUFACTURER;
}
/**
* 获取设备品牌
* @return 品牌标识,如 "samsung", "xiaomi"
*/
public static String getBrand() {
return Build.BRAND;
}
/**
* 获取设备型号
* @return 设备型号,如 "SM-G991B", "Redmi K50"
*/
public static String getModel() {
return Build.MODEL;
}
/**
* 获取产品名称
* @return 产品名称,如 "a52q", "lmi"
*/
public static String getProduct() {
return Build.PRODUCT;
}
/**
* 获取设备指纹
* @return 设备指纹信息
*/
public static String getFingerprint() {
return Build.FINGERPRINT;
}
}
在 Activity 中使用工具类
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView brandTextView = findViewById(R.id.brandTextView);
// 使用工具类获取信息
String manufacturer = DeviceUtils.getManufacturer();
String brand = DeviceUtils.getBrand();
String model = DeviceUtils.getModel();
String fingerprint = DeviceUtils.getFingerprint();
String info = "制造商: " + manufacturer + "\n" +
"品牌: " + brand + "\n" +
"型号: " + model + "\n\n" +
"设备指纹: " + fingerprint;
brandTextView.setText(info);
}
}
使用 BuildConfig 获取应用包名(补充)
虽然 BuildConfig 不是用来获取手机品牌的,但它是获取应用自身信息(如包名、版本号)的重要工具,常常与 Build 类一起使用。
// 在 Activity 或任何地方 String packageName = BuildConfig.APPLICATION_ID; String versionName = BuildConfig.VERSION_NAME; int versionCode = BuildConfig.VERSION_CODE;
重要注意事项
-
无需任何权限
Build类提供的信息是系统公开的元数据,你的应用不需要在AndroidManifest.xml中声明任何权限就可以直接读取。
(图片来源网络,侵删) -
信息可能被修改(Rom 定制)
- 大部分主流品牌(三星、小米、华为、OPPO、vivo 等)的设备信息是真实且准确的。
- 对于一些第三方定制 Rom(如 LineageOS)或被 Root 后的设备,这些信息可能被用户或开发者修改,这些信息不能用作 100% 可靠的安全验证或设备唯一标识。
- 如果需要获取设备唯一标识符,请考虑使用
ANDROID_ID或更可靠的AdvertisingIdClient(需要权限com.google.android.gms.permission.AD_ID)。
-
信息格式不统一
MANUFACTURER和BRAND的格式不同,一个是大写全称,一个是小写标识,请根据你的需求选择。MODEL的格式也可能因品牌而异。
| 需求 | 推荐方法 | 代码示例 |
|---|---|---|
| 快速获取品牌/制造商 | 直接使用 Build.MANUFACTURER |
String brand = Build.MANUFACTURER; |
| 在项目中规范使用 | 创建 DeviceUtils 工具类 |
String brand = DeviceUtils.getManufacturer(); |
| 获取设备唯一指纹 | 使用 Build.FINGERPRINT |
String fingerprint = Build.FINGERPRINT; |
对于绝大多数场景,直接使用 Build.MANUFACTURER 或通过工具类调用 DeviceUtils.getManufacturer() 就足够了。
