Android Device Unique Key 생성


앱 인스톨시 사용자 디바이스의 Behaviour를 추적하기 위해서 디바이스 아아디를 생성하려고 합니다.

여러 방법들이 있을 꺼 같은데, 현재 보통 사용중인 Device Unique Key를 생성하는 방법을 코드로 가이드 부탁드립니다.

  • 2016년 03월 25일에 작성됨

조회수 529


1 답변


방법1

import android.provider.Settings.Secure;

private String android_id = Secure.getString(getContext().getContentResolver(),
                                                        Secure.ANDROID_ID); 

팩토리 리셋하면 번호가 바뀌는 등의 문제가 있었으나 안드로이드 최신버전으로 올수록 문제가 해결되서 위와 같이 하는걸 추천한다고 하네요.

방법2 Secure.ANDROID_ID를 쓰면 최신폰에서는 잘 동작하는데 안드로이드 버전이 낮은 폰에서 문제가 생길 수 있어서 오래된 버전도 지원해야 하는 경우 다음 방법을 추천한다고 하네요.

    final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);

    final String tmDevice, tmSerial, androidId;
    tmDevice = "" + tm.getDeviceId(); //null 이 나올수도 있습니다. 
    tmSerial = "" + tm.getSimSerialNumber(); // uniq 를 보장하지 않아요. 
    androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

    UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
    String deviceId = deviceUuid.toString();

위와 같은 코드가 동작하려면 다음과 같은 퍼미션을 manifest파일에 추가해 주어야 합니다.

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

안드로이드 하드웨어에서 제공하는 값만으로는 고유한 값을 보장할 수 없기때문에 위처럼 만든후 어딘가에 저장해서 읽어오는 방식을 권합니다.

출처

  • 2016년 06월 01일에 수정됨
    안드로이드, 루비온레일즈
  • 2016년 03월 25일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close