Get Android Device Name

JavaAndroidDevice Name

Java Problem Overview


How to get Android device name? I am using HTC desire. When I connected it via HTC Sync the software is displaying the Name 'HTC Smith' . I would like to fetch this name via code.

How is this possible in Android?

Java Solutions


Solution 1 - Java

In order to get Android device name you have to add only a single line of code:

android.os.Build.MODEL;

Found here: getting-android-device-name

Solution 2 - Java

You can see answers at here https://stackoverflow.com/questions/1995439/get-android-phone-model-programmatically/26117427#26117427

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);
    }
}

Solution 3 - Java

I solved this by getting the Bluetooth name, but not from the BluetoothAdapter (that needs Bluetooth permission).

Here's the code:

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

No extra permissions needed.

Solution 4 - Java

On many popular devices the market name of the device is not available. For example, on the Samsung Galaxy S6 the value of Build.MODEL could be "SM-G920F", "SM-G920I", or "SM-G920W8".

I created a small library that gets the market (consumer friendly) name of a device. It gets the correct name for over 10,000 devices and is constantly updated. If you wish to use my library click the link below:

AndroidDeviceNames Library on Github


If you do not want to use the library above, then this is the best solution for getting a consumer friendly device name:

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

Example from my Verizon HTC One M8:

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

Result:

> HTC6525LVW > > HTC One (M8)

Solution 5 - Java

Try it. You can get Device Name through Bluetooth.

Hope it will help you

public String getPhoneName() {	
		BluetoothAdapter myDevice = BluetoothAdapter.getDefaultAdapter();
		String deviceName = myDevice.getName();		
		return deviceName;
	}

Solution 6 - Java

You can use:

From android doc:

> MANUFACTURER: > > String MANUFACTURER > > The manufacturer of the product/hardware.

> MODEL: > > String MODEL > > The end-user-visible name for the end product.

> DEVICE: > > String DEVICE > > The name of the industrial design.

As a example:

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

Furthermore, their is lot of attribute in Build class that you can use, like:

  • 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

Also their is other ways you can get device name without using Build class(through the bluetooth).

Solution 7 - Java

Following works for me.

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

I don't think so its duplicate answer. The above ppl are talking about Setting Secure, for me setting secure is giving null, if i use setting global it works. Thanks anyways.

Solution 8 - Java

universal way to get user defined DeviceName working for almost all devices and not requiring any permissions

String userDeviceName = Settings.Global.getString(getContentResolver(), Settings.Global.DEVICE_NAME);
if(userDeviceName == null)
    userDeviceName = Settings.Secure.getString(getContentResolver(), "bluetooth_name");

Solution 9 - Java

@hbhakhra's answer will do.

If you're interested in detailed explanation, it is useful to look into Android Compatibility Definition Document. (3.2.2 Build Parameters)

You will find:

> DEVICE - A value chosen by the device implementer containing the > development name or code name identifying the configuration of the > hardware features and industrial design of the device. The value of > this field MUST be encodable as 7-bit ASCII and match the regular > expression “^[a-zA-Z0-9_-]+$”. > > MODEL - A value chosen by the device implementer containing the name > of the device as known to the end user. This SHOULD be the same name > under which the device is marketed and sold to end users. There are no > requirements on the specific format of this field, except that it MUST > NOT be null or the empty string (""). > > MANUFACTURER - The trade name of the Original Equipment Manufacturer > (OEM) of the product. There are no requirements on the specific format > of this field, except that it MUST NOT be null or the empty string > ("").

Solution 10 - Java

Simply use

BluetoothAdapter.getDefaultAdapter().getName()

Solution 11 - Java

UPDATE You could retrieve the device from buildprop easitly.

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

But keep in mind, this doesn't work on some devices.

Solution 12 - Java

Try this code. You get android device name.

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

Solution 13 - Java

 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 "";
        }
    }

enter image description here

you can get 'idol3' by this way.

Solution 14 - Java

Within the GNU/Linux environment of Android, e.g., via Termux UNIX shell on a non-root device, it's available through the /system/bin/getprop command, whereas the meaning of each value is explained in Build.java within Android (also at 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

For example, it can be set as the pane_title for the status-right within tmux like so:

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

Solution 15 - Java

First,

adb shell getprop >prop_list.txt

Second,

find your device name in prop_list.txt to get the prop name, e.g. my device name is ro.oppo.market.name

Finally,

adb shell getprop ro.oppo.market.name

D:\winusr\adbl

λ adb shell getprop ro.oppo.market.name

OPPO R17

D:\winusr\adbl

λ

Solution 16 - Java

Tried These libraries but nothing worked according to my expectation and was giving absolutely wrong names.

So i created this library myself using the same data. Here is the link

AndroidPhoneNamesFinder

To use this library just add this for implementation

implementation 'com.github.aishik212:AndroidPhoneNamesFinder:v1.0.2'

Then use the following kotlin code

DeviceNameFinder.getPhoneValues(this, object : DeviceDetailsListener
{  
    override fun details(doQuery: DeviceDetailsModel?) 
    {  
        super.details(doQuery)  
        Log.d(TAG, "details: "+doQuery?.calculatedName)  
    }  
})

These are the values you will get from DeviceDetailsModel

val brand: String? #This is the brandName of the Device  
val commonName: String?, #This is the most common Name of the Device  
val codeName: String?,  #This is the codeName of the Device
val modelName: String?,  #This is the another uncommon Name of the Device
val calculatedName: String?, #This is the special name that this library tries to create from the above data.

Example of Android Emulator -

brand=Google 
commonName=Google Android Emulator 
codeName=generic_x86_arm 
modelName=sdk_gphone_x86 
calculatedName=Google Android Emulator

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionZachView Question on Stackoverflow
Solution 1 - JavahbhakhraView Answer on Stackoverflow
Solution 2 - JavaBen JimaView Answer on Stackoverflow
Solution 3 - JavaMicerView Answer on Stackoverflow
Solution 4 - JavaJared RummlerView Answer on Stackoverflow
Solution 5 - Javauser3606686View Answer on Stackoverflow
Solution 6 - JavaBlasankaView Answer on Stackoverflow
Solution 7 - JavaNeelam VermaView Answer on Stackoverflow
Solution 8 - JavaShpandView Answer on Stackoverflow
Solution 9 - JavaRoger HuangView Answer on Stackoverflow
Solution 10 - JavaAlecsView Answer on Stackoverflow
Solution 11 - JavaYasiru NayanajithView Answer on Stackoverflow
Solution 12 - JavaBhoomika ChauhanView Answer on Stackoverflow
Solution 13 - Javajiong103View Answer on Stackoverflow
Solution 14 - JavacnstView Answer on Stackoverflow
Solution 15 - JavahellocView Answer on Stackoverflow
Solution 16 - JavaAishik kirtaniyaView Answer on Stackoverflow