2011-03-30 3 views
18

Android 기기와 Android ADK에서 고유 한 Android 기기 식별자를 얻는 가장 쉬운 방법을 찾고 있습니다.ADB 및 Android SDK에서 Android 기기 식별자 가져 오기

예를 들어, 'devices'명령을 사용하면 연결된 장치의 일련 번호가 화면에 출력됩니다. 나는 안드로이드 SDK에서 동일한 일련 번호를 얻기위한 방법을 아직 밝히지 않았다.

어떤 고유 식별자가 사용되는지 신경 쓰지 않고 adb와 android SDK에서 쉽게 검색 할 수 있습니다. 장치를 루팅하는 것은 옵션이 아닙니다.

+0

대신 장치의 설치를 추적 할 수? – ridecar2

+0

이 다음과 같은 답변을 찾았습니다. http://stackoverflow.com/a/23564966/884052 –

답변

-2

당신은 아마 IMEI를 사용해야합니다

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

IMEI는 앱이 실행되는 모든 기기에 셀 라디오가 제공된다는 것을 보장 할 수 없으므로 고유 식별자에 대한 적절한 프록시가 아닐 수도 있습니다. android.hardware.telephony에 대해 를 지정할 수 있다고 가정 할 때 전화 하드웨어가 있다고 가정하는 것은 좋지 않습니다. 반면에 전화 하드웨어가있는 기기에만 앱을 제한하는 것이 행복하다면이 방법을 사용할 수 있습니다. – RivieraKid

2

ANDROID_ID를 사용해보십시오. 문서에서 "[it]은 처음 부팅 할 때 무작위로 생성되며 장치의 수명 동안 일정하게 유지되어야합니다."

+1

adb에서 어떻게 액세스 할 수 있는지 알고 있습니까? – user163757

+0

내가 아는 한 가장 신뢰할 수있는 방법은 데이터베이스 (ANDORID_ID)를 복사하는 응용 프로그램을 만드는 것입니다. 이 데이터베이스 트로프 adb (쉘에서 [sqlite3] (http://developer.android.com/guide/developing/tools/adb.html#sqlite) 명령 사용)보다 액세스 할 수 있습니다. –

+0

직접 테스트하지는 않았지만이 장소에 이미 저장된 ANDORID_ID를 찾을 수도 있습니다. - /data/data/com.android.providers.settings/databases/settings.db - 테이블 보안 -/data/data/com.google.android.googleapps/databases/gls.db - 표 메타 –

48

아마도 ANDROID_ID를 사용하고 싶을 것입니다.

settings get secure android_id 

또는 설정 컨텐츠 제공자 쿼리하여 : : 하나 또는 다른에

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

콘텐츠가 셸에서 발견되지 않은 것 같습니다. –

+0

쿼리가 끝날 때 [ '] 문자를 이스케이프 처리하면 원활하게 실행할 수 있습니다. –

+3

또는 하나의 oneliner로 :'adb 셸 '설정이 안전 android_id'' – ccpizza

8

안드로이드 모두 저장 장치 관련 정보를

는 ADB 쉘을 통해 그 가치를 조회 할 수있는 방법입니다 sqlite DB. 이러한 데이터베이스는/data/data/folder에 있습니다. adb에서이 데이터베이스를 읽으려면 루트 권한이 필요합니다.

안드로이드 ID는 ADB 사용이 명령에 대한 그래서

/data/data/com.android.providers.settings/databases/settings.db

에서 사용할 수 있습니다.

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

** 당신은 ADB 루트로 ADB를 실행해야합니다

+0

감사합니다,이 나를 위해 작동합니다. – shshank

+0

감사합니다. 그것은 나를 도울 수 – exbluesbreaker

+1

저자는 장치를 응원하는 것은 옵션이 아님을 언급했다 –

4

안드로이드 일련 번호가 getprop와 장치 내에서 입수해온 수 있습니다

자바에서

getprop ro.serialno

, 당신은 할 수 있습니다 Runtime.exec()으로

+2

일련 번호는 ** 안드로이드 ID와 동일하지 않다 **. – ccpizza

+0

@ccpizza exact,하지만 OP가 필요했습니다 ** 어떤 ** 장치 id – McX

0

안드로이드 외에도 id을 사용해보세요. 이 명령은 기본적으로 전화에 대한 모든 정보를 제공합니다.

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

나는 adb를 사용합니다.

adb devices 

그리고 출력이 같은 모양 : 우선 다음과 같은 명령을 사용하여 연결된 장치의 ID 번호를 나열 이전 출력에서 ​​

List of devices attached 
YOGAA1BBB412 device 

을, 당신은 (장치 ID 번호가 필요합니다 예를 들어, : YOGAA1BBB412).장치 ID를 얻으려면, 나는 다음과 같은 ADB 명령을 사용

adb -s YOGAA1BBB412 shell getprop | grep product.model 

을 그리고 출력은 다음과 같습니다

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

당신은'adb devices'가 기본적으로이를 보여줄 것이라고 생각합니다. 고마워. –

+0

아, 맞습니다. 긴 출력을 위해서'-l' 플래그를 사용할 필요가 있습니다. –