Android 장치 의 유일한 식별 자 ID 를 가 져 올 수 있 는 권한 이 필요 하지 않 습 니 다.
이 문 제 는 http://stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id/2853253#2853253 나 는 이 문제 의 답안 을 정리 했다. 다른 문장 을 보충 으로 넣 으 면 이 문 제 를 완벽 하 게 해결 할 수 있다 는 것 을 포함한다.
저자 가 제기 한 질문: Android 장치 에 유일한 id 가 있 습 니까?있 으 면 자바 코드 를 통 해 이 id 를 어떻게 얻 습 니까?
답: 저 는 stack OverStack 의 모든 답 을 읽 었 습 니 다. 구 글 의 개발 자 블 로그 와 Android 문 서 는 'Pseudo ID' 가 가장 좋 은 선택 이 라 고 생각 합 니 다.
우선 우리 가 왜 다른 방법 을 선택 하지 않 는 지 살 펴 보 자.
User Email
http://stackoverflow.com/questions/2112965/how-to-get-the-android-devices-primary-e-mail-address
사용자 핸드폰 번호
IMEI
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String szImei = TelephonyMgr.getDeviceId();
Android ID
String m_szAndroidID = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
WLAN MAC 주소
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String m_szWLANMAC = wm.getConnectionInfo().getMacAddress();
블 루 투 스 MAC 주소
BluetoothAdapter m_BluetoothAdapter = null;
m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_szBTMAC = m_BluetoothAdapter.getAddress();
가장 적합 한 방법: Pseudo - Unique ID
String m_szDevIDShort = "35" +
Build.BOARD.length()%10+ Build.BRAND.length()%10 +
Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 +
Build.DISPLAY.length()%10 + Build.HOST.length()%10 +
Build.ID.length()%10 + Build.MANUFACTURER.length()%10 +
Build.MODEL.length()%10 + Build.PRODUCT.length()%10 +
Build.TAGS.length()%10 + Build.TYPE.length()%10 +
Build.USER.length()%10 ; //13
'35' 에 뒤에 있 는 13 명 까지 모두 15 명 입 니 다. 우 리 는 355715565309247 이라는 번 호 를 얻 을 수 있 습 니 다. 어떠한 권한 도 필요 없고 매우 편리 합 니 다.
// Psuedo ID
public static String getUniquePsuedoID() {
String serial = null;
String m_szDevIDShort = "35" +
Build.BOARD.length()%10+ Build.BRAND.length()%10 +
Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 +
Build.DISPLAY.length()%10 + Build.HOST.length()%10 +
Build.ID.length()%10 + Build.MANUFACTURER.length()%10 +
Build.MODEL.length()%10 + Build.PRODUCT.length()%10 +
Build.TAGS.length()%10 + Build.TYPE.length()%10 +
Build.USER.length()%10 ; //13
try {
serial = android.os.Build.class.getField("SERIAL").get(null).toString();
//API>=9 serial
return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
} catch (Exception exception) {
//serial
serial = "serial"; //
}
// 15
return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
결국 이런 아 이 디 를 얻 게 됩 니 다.
--------------------- 원문:https://blog.csdn.net/nugongahou110/article/details/47003257