Tôi có thể tìm ANDROID_ID ở đâu trên thiết bị của mình?


11

Tôi biết rằng bạn có thể tìm thấy địa chỉ IMEI và MAC và những người khác bằng cách truy cập Settings -> About phone -> Status. Bạn cũng có thể tìm thấy IMEI bằng cách gõ *#06#trên bàn phím. Có cách nào để có được ANDROID_ID trên chính điện thoại, trái ngược với thông qua đoạn mã này không?

Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);

Câu trả lời:


8

Bạn có thể làm điều này thông qua adb. Không yêu cầu root, theo như tôi biết (đã thử nghiệm trên Galaxy Nexus chạy 4.2.1 được xây dựng từ nguồn AOSP):

shell@android:/ $ content query --uri content://settings/secure --projection value --where "name='android_id'"
  settings/secure --projection value --where "name='android_id'"                
  Row: 0 value=<your ID in hexadecimal>
shell@android:/ $

2
Nếu chạy qua một ứng dụng giả lập thiết bị đầu cuối, cần phải root.
Liam W

adb có nhiều đặc quyền hơn người dùng shell cục bộ. Với Android 4.x (ICS trở lên), bạn thậm chí có thể thực hiện sao lưu toàn bộ thông qua ADB trên một thiết bị chưa được phân phối - điều mà người dùng shell chắc chắn không thể.
Izzy

6

settings get secure android_idtừ adb shellđơn giản nhất, tôi tìm thấy - không có đầu ra bên ngoài và không yêu cầu root. (Từ một thiết bị đầu cuối thông thường trên thiết bị, cần phải root.)

shell@mydevice:/ $ settings get secure android_id
0123456789abcdef
shell@mydevice:/ $ 

Để vào vỏ adb: 1. Chuyển đến android_sdk/platform-tools/bằng cmd hoặc thiết bị đầu cuối khác. 2. adb devicesđể kiểm tra xem điện thoại của bạn có thể được tìm thấy qua USB không. 3 adb shell.. 4. Chạy lệnh trong câu trả lời này.
NumeSanguis

2

biến thể eldarerathis không phù hợp với tôi và tôi không muốn cài đặt một ứng dụng chỉ vì điều đó, tôi đã tìm thấy một cách khác. Hạn chế duy nhất có thể: Nó yêu cầu root.

adb shell
$ su
# cd /data/data/com.android.providers.settings/databases
# sqlite3 settings.db
sql> select * from secure where name='android_id';
26|android_id|1234567890abcdef1

Cái android_idnày được tìm thấy trong cột thứ ba ở đây (được ẩn danh trong ví dụ).


BIÊN TẬP:

Lưu ý rằng đây là KHÔNG sự android_idđược sử dụng bởi các ứng dụng của Google. Google dường như đã quyết định cho một số nhầm lẫn ở đây. Đối với Dịch vụ Play , có một GTalkandroid_id được lưu trữ riêng biệt , như được chỉ ra bởi một bài đăng trên blog (cũng xem câu trả lời này của HassleFixes , người tự động của StripSearch , và rất may chỉ ra điều này trong các bình luận):

  • gọi trình quay số của bạn
  • quay số *#*#8255#*#*
  • coi chừng "ID thiết bị"
  • loại bỏ hàng đầu android-
  • những gì còn lại, được android_idsử dụng bởi Google Services

Tôi đã xác minh rằng: sự android_idlấy ra theo cách này hoạt động tốt trên một thiết bị không có Google Apps được cài đặt (sử dụng với BlankStore cung cấp bởi NOGAPPS dự án).


2

Câu trả lời trên có $ content query --uri content://settings/secure --projection value --where "name='android_id'"trong đó

Nếu bạn đang thực hiện điều này từ shell thì bạn sẽ cần phải thoát các trích dẫn xung quanh android_id nếu không chúng được hiểu và câu lệnh SQL không có chúng, dẫn đến một cột không xác định.

Lệnh đầy đủ của tôi từ bash trông dòng ...
$ adb shell content query --uri content://settings/secure --projection value --where "name=\'android_id\'"

^ Không đủ danh tiếng để bình luận về câu trả lời gợi ý ở trên


Loại. Câu trả lời của @ eldarerathis đã khởi động một trình bao trên thiết bị adb shellvà sau đó chạy một lệnh khác trong trình bao đó. Điều này hoạt động tốt mà không thoát khỏi dấu ngoặc kép. Câu trả lời của bạn đang chạy một lệnh duy nhất trên máy chính; Đối với điều này, bạn cần phải thoát khỏi dấu ngoặc kép.
Đánh dấu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.