我正在尝试获取设置中设置的用户定义设备名称。我已经尝试了几种选择,但到目前为止没有。
如果它有帮助或有伤害,我在 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.System.getString(getContentResolver(), “bluetooth_name”);
(文档)Settings.Secure.getString(getContentResolver(), “bluetooth_name”);
(文档)BluetoothAdapter.getDefaultAdapter().getName();
(文档)Settings.System.getString(getContentResolver(), “device_name”);
(文档)Settings.Secure.getString(getContentResolver(), “lock_screen_owner_info”);
(文档)在我同事测试的设备上,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>"
利用:
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");