从 ADB 和 Android SDK 获取 Android 设备标识符

发布于 2024-10-27 10:33:18 字数 222 浏览 5 评论 0原文

我正在寻找从 Android adb 和 Android ADK 本身获取唯一 Android 设备标识符的最简单方法。

例如,当我使用 adb 'devices' 命令时,我连接的设备的序列号会输出到屏幕上。我尚未在 Android sdk 中找到一种方法来获取相同的序列号。

我不关心使用什么唯一标识符,只关心可以从 adb 和 android sdk 轻松检索的东西。植根设备将不是一个选项。

I am looking for the easiest way to get a unique android device identifier from both the Android adb and the Android ADK itself.

For example, when i use the adb 'devices' command, the serial number of my connected device is outputted to the screen. I have yet to identify a method in the Android sdk to get me the same serial number.

I don't care what unique identifier is used, just something that can be easily retrieved from both the adb and android sdk. Rooting a device will not be an option.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(12

分开我的手 2024-11-03 10:33:18

您可能想要使用 ANDROID_ID。

您可以通过以下方式通过 adb shell 查询其值:

settings get secure android_id

或者通过查询设置内容提供程序:

content query --uri content://settings/secure/android_id --projection value

You would probably want to use ANDROID_ID.

This is how you can query its value via adb shell:

settings get secure android_id

Or by querying the settings content provider:

content query --uri content://settings/secure/android_id --projection value
星光不落少年眉 2024-11-03 10:33:18

就像使用 adb 一样简单

adb devices -l

Simple as that with adb

adb devices -l
來不及說愛妳 2024-11-03 10:33:18

Android 将所有设备相关信息存储在一个或另一个 sqlite 数据库中。
这些数据库可以在/data/data/文件夹中找到。
要从 adb 读取这些数据库,您需要 root 权限。

android id 可在 /data/data/com.android.providers.settings/databases/settings.db 中找到,

因此对于 adb 使用此命令。

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select value from secure where name = 'android_id'"

**您必须在 adb 中以 root 身份运行 adb

Android stores all the device related info in one or the other sqlite DB.
These databases can be found in /data/data/ folder.
To read these databases from adb you will need root permissions.

The android id is available in /data/data/com.android.providers.settings/databases/settings.db

So for adb use this command.

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select value from secure where name = 'android_id'"

**you must be running adb as root in adb

与往事干杯 2024-11-03 10:33:18

可以使用 getprop 在设备内检索 Android 序列号:

getprop ro。 Serialno

在 Java 中,您可能需要使用 Runtime.exec()

The Android serial number can be retreived within the device with getprop :

getprop ro.serialno

From Java, you may want to execute it with Runtime.exec()

烂柯人 2024-11-03 10:33:18

我用的是adb。首先,我使用以下命令列出附加的设备 ID 号:

adb devices

输出将如下所示:

List of devices attached
YOGAA1BBB412    device

从之前的输出中,您将需要设备 ID 号(例如:YOGAA1BBB412)。为了获取设备 ID,我使用以下 adb 命令:

adb -s YOGAA1BBB412 shell getprop | grep product.model

输出如下所示:

[ro.product.model]: [Lenovo YT3-X90F]

I use adb. First I list the attached device ID numbers with the following command:

adb devices

And the output will look something like this:

List of devices attached
YOGAA1BBB412    device

From the previous output, you will need the device ID number (eg: YOGAA1BBB412). To get the Device ID, I use the following adb command:

adb -s YOGAA1BBB412 shell getprop | grep product.model

And the output looks like this:

[ro.product.model]: [Lenovo YT3-X90F]
我做我的改变 2024-11-03 10:33:18

尝试 ANDROID_ID。正如文档所述“[它]是在第一次启动时随机生成的,并且应该在设备的生命周期内保持不变”。

Try ANDROID_ID. As documentation says "[it] is randomly generated on first boot and should remain constant for the lifetime of the device".

时间海 2024-11-03 10:33:18

请通过运行以下命令确保您的设备已连接。

adb devices -l

之后要获取该设备的 android id,您可以运行以下命令。

adb shell content query --uri content://settings/secure --where "name=\'android_id\'"

Please make sure your device is connected by running the below command.

adb devices -l

after that to get the android id of that device you can run the below command.

adb shell content query --uri content://settings/secure --where "name=\'android_id\'"
剩余の解释 2024-11-03 10:33:18

adb shell 设置获取安全的 android_id

此命令返回 ANDROID_ID,但它可能与代码级别收到的 ANDROID_ID 不同。应用程序可以使用不同的最低 API 级别,并且从 adb shell 获取的值可能不匹配

可以从 [net.hostname] 属性获取 ANDROID_ID。它在 API 级别 23 中工作。

获取 API 级别 23 的 android_id 的命令

adb shell getprop net.hostname

在 android 8.0 及更高版本中,由于 android 隐私政策更改,此属性返回 null。
因此,ANDROID_ID 不再是唯一设备 ID 比较的可靠方法。

adb shell settings get secure android_id

This command returns ANDROID_ID but it may not be the same as ANDROID_ID received at code level. The application can use different min API level and the value obtained from adb shell may not match

It was possible to get the ANDROID_ID from [net.hostname] prop. It worked in API level 23.

Command to get the android_id for API level 23

adb shell getprop net.hostname

In android 8.0 and above this prop returns null due to android privacy policy changes.
Hence, ANDROID_ID doesn't remain to be a reliable method of unique device id comparison.

不必了 2024-11-03 10:33:18

试试这个并找到 Android 之外的 id。该命令基本上提供了有关手机的所有信息。

adb -s <YOUR-DEVICE-ID> shell getprop

Try this and find the id besides Android. The command gives basically all info about the phone.

adb -s <YOUR-DEVICE-ID> shell getprop
2024-11-03 10:33:18

使用具有 Android 的 getprop net.hostname唯一 ID 后跟关键字 android-<64 位十六进制字符串>

示例:

[net.hostname]: [android-a487e0560d669e4a]

Use getprop net.hostname which has an Android unique Id followed by keyword android-<64 bit Hexadecimal String>

example:

[net.hostname]: [android-a487e0560d669e4a]
别低头,皇冠会掉 2024-11-03 10:33:18

要在 ubuntu 上查找有关已连接 USB 设备的所有信息,请使用以下命令
lsusb -v
查看链接
输入图片此处描述
它会给你设备ID,比如
总线 001 设备 005:ID 18d1:4ee7 Google Inc.
所以使用前四个“18d1”来添加android usb规则

To find everything about connected usb device on ubuntu use below command
lsusb -v
See the link
enter image description here
it will give u device id like
Bus 001 Device 005: ID 18d1:4ee7 Google Inc.
So use first four "18d1" to add android usb rules

冬天旳寂寞 2024-11-03 10:33:18

您可能应该使用 IMEI:

    TelephonyManager m = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);
    String imei = m != null ? m.getDeviceId() : null;

you should probably use IMEI:

    TelephonyManager m = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);
    String imei = m != null ? m.getDeviceId() : null;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文