我目前正在使用以下代码以编程方式检索设备的ANDROID_ID
:
Settings.Secure.getString(this._context.getContentResolver(), Settings.Secure.ANDROID_ID);
如何从设备(而不是通过编程方式)“可视地”检索相同的ID?
我到处都看过,但是无法在设置中找到它,也没有使用DeviceId之类的应用
答案 0 :(得分:2)
不再有全局ANDROID_ID
。从Android 8开始,每个应用程序都会看到不同的值。更具体地说,该值取决于用于对应用程序,用户(在多用户设备上)和设备进行签名的签名。
有关更多详细信息,请参见Settings.Secure.ANDROID_ID
答案 1 :(得分:1)
我们可以将答案分为两个部分,具体取决于哪个Android API级设备。
API级别为
可以使用以下ANDROID_ID
命令来检索adb
值:
# this will retrieve current user's ANDROID_ID
$ adb shell settings get secure android_id
ba003ff1b4125132
# you can also get the value of each other user's value by specifying --user <USER_ID>
$ adb shell settings get --user 10 secure android_id
3e6a5f43bd80ea6
在仿真器(或有根设备)上,您可以使用以下命令找到ANDROID_ID
:
# first, switch into a root mode and open a shell
$ adb root
$ adb shell
# find which users exist on a device (this example shows two users having ID 0 and 10)
$ ls -l /data/system/users
drwx------ 4 system system 4096 2019-10-09 18:05 0
-rw------- 1 system system 267 2019-10-09 18:05 0.xml
drwx------ 5 system system 4096 2019-10-09 18:05 10
-rw------- 1 system system 385 2019-10-09 18:05 10.xml
-rw------- 1 system system 367 2019-10-09 18:05 userlist.xml
# the ANDROID_ID located in settings_secure.xml file
$ cat 0/settings_secure.xml | grep android_id
<setting id="31" name="android_id" value="ba003ff1b4125132" package="android" />
# similarly, we can find user 10's value:
$ cat 10/settings_secure.xml | grep android_id
<setting id="31" name="android_id" value="3e6a5f43bd80ea6" package="android" />
API级别> = Android 8.0(Oreo)的设备
可以在8.0和更高版本的设备上使用与上述相同的技术,但是可以看到它返回的(全局ANDROID_ID
)值only by system processes。
adb
目前不支持检索特定应用程序的ANDROID_ID
,因为它的值正在写入单独的文件(settings_ssaid.xml
,而adb
允许仅访问system
,secure
或global
中的值)。但是,在仿真器或有根设备上可以轻松实现:
$ adb root
$ adb shell
# here I'm using user with ID 0
$ cd /data/system/users/0
$ cat settings_ssaid.xml
<settings version="-1">
<setting id="0" name="userkey" value="E4FC4CFF14039F5AD44AD63F70007F85FDBBE1FF9BCB9FF5331B3FD33E057461" package="android" defaultValue="E4FC4CFF14039F5AD44AD63F70007F85FDBBE1FF9BCB9FF5331B3FD33E057461" defaultSysSet="true" tag="null" />
<setting id="4" name="10072" value="9d5f269e42d4ca76" package="info.osom.ssaid" defaultValue="9d5f269e42d4ca76" defaultSysSet="false" tag="null" />
</settings>
在此示例中,我有一个应用程序,程序包名称为info.osom.ssaid
,其包ANDROID_ID
的值为9d5f269e42d4ca76
。
答案 2 :(得分:0)
您为什么需要ANDROID_ID
?如果出于美化的原因需要它((要知道是哪个设备)),建议该值不是恒定的,但可能会随时间变化。您可以详细了解here。
唯一可用于标识您的设备的值是MacAddress,但即使这样也不建议使用。
如果由于其他原因需要此值,请忽略此答案。