Android-디바이스에 대한 고유값 생성
Android Device ID 생성하기
Android 기기에 대한 고유 번호를 생성하기 위한 연구
- android.os.Build 클래스 설명
- android.os.BUILD 퍼블릭 클래스는 현재 빌드 정보와 공개된 시스템 프로퍼티정보를 제공한다.
- android.os.BUILD 는 스텍틱 클래스이고, 정보를 수정하거나 삭제 하는게 아니라, 오직 읽기만 가능합니다. 그렇기 때문에 모든 필드는 public static String 을 기본으로 한다.
package com.getDeviceInfoTest.osimfo;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
//import android.support.v7.app.AppCompatActivity;
import android.telephony.TelephonyManager;
import android.util.Log;
import java.util.UUID;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "PhoneState";
private AppCompatActivity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
activity = this;
/*unique device ID 생성*/
String device_unique = getUniqueID(activity.getApplicationContext());
// getApplicationContext() 메소드
// context를 얻어올 수 있다.
// 안드로이드 context 에는 Application context와 Acitivty context가 있다.
// 어플리케이션의 Context가 return된다. 현재 activiy의 context 뿐만 아니라 application의 lifeCycle에 해당하는 Context가 사용된다.
// getApplicationContext()는 application context 의미 한다.
Log.i(TAG, "============ 디바이스 고유키 ============");
Log.d("device_key", device_unique);
Log.i(TAG, "============ 디바이스 정보 추출============");
Log.i(TAG, "BOARD = " + Build.BOARD);
Log.i(TAG, "BRAND = " + Build.BRAND);
Log.i(TAG, "CPU_ABI = " + Build.CPU_ABI);
Log.i(TAG, "DEVICE = " + Build.DEVICE);
Log.i(TAG, "DISPLAY = " + Build.DISPLAY);
Log.i(TAG, "FINGERPRINT = " + Build.FINGERPRINT);
Log.i(TAG, "HOST = " + Build.HOST);
Log.i(TAG, "ID = " + Build.ID);
Log.i(TAG, "MANUFACTURER = " + Build.MANUFACTURER);
Log.i(TAG, "MODEL = " + Build.MODEL); //디바이스 모델명
Log.i(TAG, "PRODUCT = " + Build.PRODUCT);
Log.i(TAG, "TAGS = " + Build.TAGS);
Log.i(TAG, "TYPE = " + Build.TYPE);
Log.i(TAG, "USER = " + Build.USER);
}
public String getUniqueID(Context context) {
//매개변수인 Context로는 MainActivity.this 등으로 넣어주면 됩니다.
final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
//TelephonyManger 클래스를 Context.TELEPHONY_SERVICE를 이용하여 호출
//단말기 정보를 가져온다. 안드로이드 OS에서 제공되는 디바이스 ID 생성메소드
// String phoneNum = tm.getLine1Number(); 는 휴대폰 번호를 가져온다.
// String deviceID = tm.getDeviceId();
final String tmDevice, tmSerial, androidId;
tmDevice = "" + tm.getDataState();
//tmSerial = "" + tm.getSimSerialNumber();
tmSerial = "" + 123456789; //test
androidId = "" + android.provider.Settings.Secure.getString(context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
//ANDROID_ID를 가져와서 String 객체로 저장한다.
UUID deviceUuid = new UUID(androidId.hashCode(), ((long) tmDevice.hashCode() << 32) | tmSerial.hashCode());
//안드로이드에서는 기기의 ID와, 시리얼 넘버, 그리고 안드로이드 시큐리티(Security) ID 이 세 가지의 해시 값을 사용하여 UUID가 생성된다.
String deviceId = deviceUuid.toString();
return deviceId;
}
}
댓글남기기