197

如何获取 Android 设备名称?我正在使用HTC的欲望。当我通过 HTC Sync 连接时,软件显示名称'HTC Smith'。我想通过代码获取这个名字。

这在Android中怎么可能?

4

15 回答 15

306

为了获得 Android 设备名称,您只需添加一行代码:

android.os.Build.MODEL;

在这里找到:getting-android-device-name

于 2011-08-15T22:07:57.410 回答
47

你可以在这里看到答案Get Android Phone Model Programmatically

public String getDeviceName() {
   String manufacturer = Build.MANUFACTURER;
   String model = Build.MODEL;
   if (model.startsWith(manufacturer)) {
      return capitalize(model);
   } else {
      return capitalize(manufacturer) + " " + model;
   }
}


private String capitalize(String s) {
    if (s == null || s.length() == 0) {
        return "";
    }
    char first = s.charAt(0);
    if (Character.isUpperCase(first)) {
        return s;
    } else {
        return Character.toUpperCase(first) + s.substring(1);
    }
}
于 2014-09-30T09:43:46.973 回答
47

我通过获取蓝牙名称解决了这个问题,但不是来自BluetoothAdapter(需要蓝牙许可)。

这是代码:

Settings.Secure.getString(getContentResolver(), "bluetooth_name");

不需要额外的权限。

于 2017-08-15T16:03:50.047 回答
26

在许多流行的设备上,该设备的市场名称不可用。例如,在三星 Galaxy S6 上, 的值Build.MODEL可能是"SM-G920F""SM-G920I""SM-G920W8"

我创建了一个小型库,用于获取设备的市场(消费者友好)名称。它为超过 10,000台设备获得了正确的名称,并且不断更新。如果您想使用我的图书馆,请单击下面的链接:

Github 上的 AndroidDeviceNames 库


如果您不想使用上面的库,那么这是获得消费者友好设备名称的最佳解决方案:

/** Returns the consumer friendly device name */
public static String getDeviceName() {
    String manufacturer = Build.MANUFACTURER;
    String model = Build.MODEL;
    if (model.startsWith(manufacturer)) {
        return capitalize(model);
    }
    return capitalize(manufacturer) + " " + model;
}

private static String capitalize(String str) {
    if (TextUtils.isEmpty(str)) {
        return str;
    }
    char[] arr = str.toCharArray();
    boolean capitalizeNext = true;
    String phrase = "";
    for (char c : arr) {
        if (capitalizeNext && Character.isLetter(c)) {
            phrase += Character.toUpperCase(c);
            capitalizeNext = false;
            continue;
        } else if (Character.isWhitespace(c)) {
            capitalizeNext = true;
        }
        phrase += c;
    }
    return phrase;
}

我的 Verizon HTC One M8 示例:

// using method from above
System.out.println(getDeviceName());
// Using https://github.com/jaredrummler/AndroidDeviceNames
System.out.println(DeviceName.getDeviceName());

结果:

HTC6525LVW

宏达一 (M8)

于 2015-12-14T11:52:28.327 回答
24

尝试一下。您可以通过蓝牙获取设备名称。

希望对你有帮助

public String getPhoneName() {  
        BluetoothAdapter myDevice = BluetoothAdapter.getDefaultAdapter();
        String deviceName = myDevice.getName();     
        return deviceName;
    }
于 2014-05-19T04:14:18.260 回答
12

您可以使用:

来自安卓文档:

MANUFACTURER

String MANUFACTURER

产品/硬件的制造商。

MODEL

String MODEL

最终产品的最终用户可见名称。

DEVICE

String DEVICE

工业设计的名称。

例如:

String deviceName = android.os.Build.MANUFACTURER + " " + android.os.Build.MODEL;
//to add to textview
TextView textView = (TextView) findViewById(R.id.text_view);
textView.setText(deviceName);

此外,它们在Build 类中有很多属性可供您使用,例如:

  • os.android.Build.BOARD
  • os.android.Build.BRAND
  • os.android.Build.BOOTLOADER
  • os.android.Build.DISPLAY
  • os.android.Build.CPU_ABI
  • os.android.Build.PRODUCT
  • os.android.Build.HARDWARE
  • os.android.Build.ID

他们还有其他方法可以在不使用Build类的情况下获取设备名称(通过蓝牙)。

于 2017-07-19T18:34:49.543 回答
4

以下对我有用。

String deviceName = Settings.Global.getString(.getContentResolver(), Settings.Global.DEVICE_NAME);

我不这么认为它的重复答案。上面的人在谈论设置安全,对我来说设置安全是给空的,如果我使用设置全局它可以工作。无论如何谢谢。

于 2018-07-20T17:15:25.330 回答
3

使用户定义的 DeviceName适用于几乎所有设备且不需要任何权限的通用方法

String userDeviceName = Settings.Global.getString(getContentResolver(), Settings.Global.DEVICE_NAME);
if(userDeviceName == null)
    userDeviceName = Settings.Secure.getString(getContentResolver(), "bluetooth_name");
于 2021-03-16T08:25:45.700 回答
1

@hbhakhra 的回答会做。

如果您对详细解释感兴趣,查看Android Compatibility Definition Document很有用。(3.2.2 编译参数)

你会找到:

DEVICE - 由设备实现者选择的一个值,包含标识硬件功能配置和设备工业设计的开发名称或代号。此字段的值必须可编码为 7 位 ASCII 并匹配正则表达式“^[a-zA-Z0-9_-]+$”。

MODEL - 由设备实现者选择的值,其中包含最终用户已知的设备名称。这应该与设备销售和销售给最终用户的名称相同。该字段的具体格式没有要求,但不能为空或空字符串(“”)。

制造商 - 产品的原始设备制造商 (OEM) 的商品名称。该字段的具体格式没有要求,但不能为空或空字符串(“”)。

于 2016-02-02T02:46:42.690 回答
1

只需使用

BluetoothAdapter.getDefaultAdapter().getName()

于 2016-12-16T12:25:38.243 回答
1

更新您可以轻松地从 buildprop 检索设备。

static String GetDeviceName() {
    Process p;
    String propvalue = "";
    try {
        p = new ProcessBuilder("/system/bin/getprop", "ro.semc.product.name").redirectErrorStream(true).start();
        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while ((line = br.readLine()) != null) {
            propvalue = line;
        }
        p.destroy();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return propvalue;
}

但请记住,这在某些设备上不起作用。

于 2017-09-26T17:05:29.283 回答
1

试试这个代码。您将获得 android 设备名称。

public static String getDeviceName() {
    String manufacturer = Build.MANUFACTURER;
    String model = Build.MODEL;
    if (model.startsWith(manufacturer)) {
        return model;
    }
    return manufacturer + " " + model;
}
于 2018-07-28T12:03:10.850 回答
0
 static String getDeviceName() {
        try {
            Class systemPropertiesClass = Class.forName("android.os.SystemProperties");
            Method getMethod = systemPropertiesClass.getMethod("get", String.class);
            Object object = new Object();
            Object obj = getMethod.invoke(object, "ro.product.device");
            return (obj == null ? "" : (String) obj);
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

在此处输入图像描述

你可以通过这种方式获得'idol3'。

于 2018-10-10T07:26:32.613 回答
0

在 Android 的 GNU/Linux 环境中,例如,通过非 root 设备上的Termux/system/bin/getprop UNIX shell,它可以通过命令获得,而每个值的含义Build.java在 Android中进行了解释(也在googlesource):

% /system/bin/getprop | fgrep ro.product | tail -3
[ro.product.manufacturer]: [Google]
[ro.product.model]: [Pixel 2 XL]
[ro.product.name]: [taimen]
% /system/bin/getprop ro.product.model
Pixel 2 XL
% /system/bin/getprop ro.product.model | tr ' ' _
Pixel_2_XL

例如,它可以设置为pane_titlefor thestatus-right inside tmux,如下所示:

tmux select-pane -T "$(getprop ro.product.model)"

于 2021-09-27T14:37:47.723 回答
0

第一的,

adb shell getprop >prop_list.txt

第二,

在 prop_list.txt 中找到您的设备名称以获取道具名称,例如我的设备名称是 ro.oppo.market.name

最后,

adb shell getprop ro.oppo.market.name

D:\winusr\adbl

λ adb shell getprop ro.oppo.market.name

OPPO R17

D:\winusr\adbl

λ

于 2021-12-07T12:12:50.673 回答