【发布时间】:2013-05-23 02:16:33
【问题描述】:
我正在尝试获取设置中设置的用户定义设备名称。我已经尝试了几种选择,但到目前为止没有。
如果它有帮助或有伤害,我需要它在 BroadcastReceiver 中
谢谢
【问题讨论】:
我正在尝试获取设置中设置的用户定义设备名称。我已经尝试了几种选择,但到目前为止没有。
如果它有帮助或有伤害,我需要它在 BroadcastReceiver 中
谢谢
【问题讨论】:
这让我得到了我需要的东西...... http://cmanios.wordpress.com/2012/05/09/bluetooth-adapter-device-name-and-mac-address-in-android/
BluetoothAdapter myDevice = BluetoothAdapter.getDefaultAdapter();
String deviceName = myDevice.getName();
确保添加
<uses-permission android:name="android.permission.BLUETOOTH"/>
到你的清单
【讨论】:
BluetoothAdapter myDevice = BluetoothAdapter.getDefaultAdapter();
String deviceName = myDevice.getName();
返回 Galaxy S5。
String deviceName = android.os.Build.MODEL;
returns SM-G900H.
经过一番研究,我在 /data/data/com.android.providers.settings/databases/settings.db 中找到了 device_name
所以,使用 shell 命令来获取它
shell@k3g:/ $ settings get system device_name
settings get system device_name
Milky Way
使用java
String deviceName = Settings.System.getString(getContentResolver(), "device_name");
returns Milky Way
POC github 项目 https://github.com/kakopappa/getdevcicename
详细解释: http://androidbridge.blogspot.com/2016/09/how-to-get-android-device-name-settings.html
【讨论】:
settings get global device_name 和 java 中的 Settings.Global.getString(getContentResolver(), "device_name");
Settings.System 方法现在也返回“null”。
null、Fire 或 KFDOWI。嗯。 android docs 说 device_name 是在 API 级别 25 中添加的,这显然意味着 Fire OS 6,所以我想这是有道理的。有点。为什么settings get global device_name 会返回任何东西呢?
总之,检索用户自定义设备名称没有单一一致的方法。
但是,您可以使用许多适用于不同型号和制造商的实用程序:
Settings.System.getString(getContentResolver(), “bluetooth_name”); (docs)Settings.Secure.getString(getContentResolver(), “bluetooth_name”); (docs)BluetoothAdapter.getDefaultAdapter().getName(); (docs)Settings.System.getString(getContentResolver(), “device_name”); (docs)Settings.Secure.getString(getContentResolver(), “lock_screen_owner_info”); (docs)在我同事测试的设备上,1、2 和 3 似乎是最可靠的。以下是他的完整分析:
来源:https://medium.com/@pribble88/how-to-get-an-android-device-nickname-4b4700b3068c
【讨论】:
以下作品适合我
String deviceName = Settings.Global.getString(<Context>.getContentResolver(), Settings.Global.DEVICE_NAME);
【讨论】:
这个在 API 25 上为我工作:
Settings.Secure.getString(getContentResolver(), "bluetooth_name");
这里是如何找到它...(只需替换您的设备名称)
$ adb shell
$ settings list system | grep "<device_name>"
$ settings list secure | grep "<device_name>"
【讨论】:
list选项,只有get和put。
settings shell 命令没有 list 选项。
settings list global | grep "<device_name>"
用途:
String deviceName = android.os.Build.MODEL;
【讨论】:
上述方法均不适用于所有设备。如果您想要一种在几乎所有 Android 设备(包括电视)上获取用户定义的设备名称且不需要任何权限的可靠方法,请使用此方法
String userDeviceName = Settings.Global.getString(getContentResolver(), Settings.Global.DEVICE_NAME);
if(userDeviceName == null)
userDeviceName = Settings.Secure.getString(getContentResolver(), "bluetooth_name");
【讨论】: