인디노트
Android 장치의 UUID 같은것을 가져오는 기능의 코드 스니펫 본문
Android, Kotlin
object UniqueID {
@SuppressLint("MissingPermission", "HardwareIds")
fun getDeviceID(context: Context) : String {
val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
return telephonyManager.deviceId
}
@SuppressLint("MissingPermission", "HardwareIds")
fun getSimSerialNumber(context: Context): String{
val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
return telephonyManager.simSerialNumber
}
@SuppressLint("HardwareIds")
fun getAndroidID(context: Context): String {
return Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID)
}
fun getWidevineID(): String {
val WIDEVINE_UUID = UUID(-0x121074568629b532L, -0x5c37d8232ae2de13L)
val wvDrm = try {
MediaDrm(WIDEVINE_UUID)
} catch (e: UnsupportedSchemeException) {
//WIDEVINE is not available
null
}
val widevineId = wvDrm!!.getPropertyByteArray(MediaDrm.PROPERTY_DEVICE_UNIQUE_ID)
val encodedWidevineId = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Base64.getEncoder().encodeToString(widevineId).trim()
} else {
TODO("VERSION.SDK_INT < O")
}
return encodedWidevineId
}
private val digits = "0123456789ABCDEF"
fun bytesToHex(byteArray: ByteArray): String {
val hexChars = CharArray(byteArray.size * 2)
for (i in byteArray.indices) {
val v = byteArray[i].toInt() and 0xff
hexChars[i * 2] = digits[v shr 4]
hexChars[i * 2 + 1] = digits[v and 0xf]
}
return String(hexChars)
}
fun hashSHA256(msg: String): String {
val hash: ByteArray
try {
val md = MessageDigest.getInstance("SHA-256")
md.update(msg.toByteArray())
hash = md.digest()
} catch (e: CloneNotSupportedException) {
throw DigestException("couldn't make digest of partial content");
}
return bytesToHex(hash)
}
fun uuid(msg: String): UUID? {
val hash: ByteArray
try {
val md = MessageDigest.getInstance("SHA-256")
md.update(msg.toByteArray())
hash = md.digest()
} catch (e: CloneNotSupportedException) {
throw DigestException("couldn't make digest of partial content");
}
return nameUUIDFromBytes(hash)
}
fun GetAppName(context: Context): String = context.applicationInfo.loadLabel(context.packageManager).toString()
fun GetAppVersion(context: Context): String {
var version = ""
try {
val pInfo = context.packageManager.getPackageInfo(context.packageName, 0)
version = pInfo.versionName
} catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace()
}
return version
}
}
반응형
'소스 팁 > Java, Android, Kotlin' 카테고리의 다른 글
안드로이드 View Binding 을 이용하여 쉽게 만들자 (0) | 2021.07.14 |
---|---|
Kotlin byte to HEX 변환 코드 (0) | 2021.07.13 |
안드로이드 시리얼 통신_USB_COM_PROT (0) | 2021.07.08 |
안드로이드 데이터 그리드 (테이블) 뷰 콤포넌트 있는곳 (0) | 2021.07.08 |
Kotlin 에서의 for 와 forEach 의 처리속도 체크에 대한 이해도 높은 글 (0) | 2021.06.05 |
Comments