투케이2K

90. (AndroidStudio/android/java) 디바이스 고유 값 추출 코드 - adid, mac, android id , widevine 본문

Android

90. (AndroidStudio/android/java) 디바이스 고유 값 추출 코드 - adid, mac, android id , widevine

투케이2K 2021. 3. 23. 13:52
반응형

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

 

/**
	 * [단말기 고유값을 추출하는 클래스]
	 * 1. 호출 방법 : C_DeviceID.setDeviceID(A_Main.this); //TODO 단말기 고유값 지정
	 *               C_DeviceID.getDeviceID(A_Main.this); //TODO 저장된 단말기 고유값 호출
	 *
	 * 2. 저장 확인 : String DeviceID = "";
	 *                DeviceID = C_DeviceID.getDeviceID(A_Main.this);
	 *                //TODO IF 저장된 단말기값이 널이 아닌 경우 / ELSE 널인 경우
	 *                if(DeviceID != null && DeviceID.length() > 0 && !DeviceID.equals("") && !DeviceID.contains("null")) { } else { }
	 *
	 * 3. 로직 : 구글 광고값 ADID 추출 > 구글 광고값 추출 실패 시 하드웨어 고유값을 반환한다
	 *
	 * 4. 하드웨어 고유값 추출 로직 : Widevine 값 > Anroid ID 값 > WIFI 맥값 > 빌드 정보 > 기본값
	 *
	 * 5. Google ADID : 구글 광고값을 추출한다
	 *                  디바이스 초기화 시 값이 변경됨
	 *                  구글 설정 > 광고 ID 재설정 시 값이 변경됨
	 *                  광고값 노출 안할 시 값이 널이됨
	 *
	 * 6. Wifi Mac : p2p 값을 추출 후 정규식을 사용해서 mac값 생성 실시
	 *              특정 상위버전 OS 기기에서 MAC 값이 동일하게 생성되는 디바이스 있음
	 *
	 * 7. Anroid ID : 기기 부팅 시 최초로 생성되는 고유값
	 *                오레오 버전 이상 부터 배포용, 디버깅용 APK 파일 고유값이 다르게 지정됨
	 *                디바이스 초기화 시 값이 변경됨
	 *
	 * 8. Widevine ID : 앱 삭제 or 데이터 삭제해도 변경되지 않음
	 *                  DRM 모듈은 글로벌 범위에서 유일한 GUID값을 갖는다
	 *                  DRM 모듈이 없는 디바이스에서는 사용이 불가능하다
	 *                  안드로이드 4.3 미만은 사용이 불가능하다
	 *                  디바이스 초기화 시 값이 변경됨
	 *
	 * 9. 구글 광고값 의존성 :
	 * maven { url "https://jitpack.io" } : allprojects > repositories 부분
	 * mavenCentral() : allprojects > repositories 부분
	 * implementation 'com.google.android.gms:play-services:11.0.4'
	 * implementation 'com.google.android.gms:play-services-auth:11.0.4'
	 *
	 * 10. 필요 퍼미션 :
	 * <uses-permission android:name="android.permission.READ_PHONE_STATE" />
	 * <uses-permission android:name="android.permission.INTERNET"/>
	 * <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
	 * <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
	 * <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
	 * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
	 *
	 * */

/* =========================== */

[결과 출력]

/* =========================== */

[파일 첨부]

소스코드.txt
0.02MB

/* =========================== */

반응형
Comments