feat(sdk-core): deviceId 优先使用 ANDROID_ID,卸载重装后仍可识别设备
- 优先读取 Settings.Secure.ANDROID_ID(绑定设备,非应用) - 过滤已知无效值(9774d56d682e549c 等) - ANDROID_ID 前缀 aid_ 区分来源 - 回退到随机 UUID(恢复出厂设置等场景)
这个提交包含在:
父节点
5d1b07b997
当前提交
fd37f57fbf
@ -337,9 +337,25 @@ object XuqmSDK {
|
|||||||
val key = "device_id"
|
val key = "device_id"
|
||||||
val stored = prefs.getString(key, null)
|
val stored = prefs.getString(key, null)
|
||||||
if (!stored.isNullOrBlank()) return stored
|
if (!stored.isNullOrBlank()) return stored
|
||||||
val generated = java.util.UUID.randomUUID().toString()
|
|
||||||
prefs.edit().putString(key, generated).apply()
|
// 优先使用 ANDROID_ID(卸载重装后不变,绑定设备而非应用)
|
||||||
return generated
|
val androidId = runCatching {
|
||||||
|
android.provider.Settings.Secure.getString(
|
||||||
|
context.contentResolver,
|
||||||
|
android.provider.Settings.Secure.ANDROID_ID,
|
||||||
|
)
|
||||||
|
}.getOrNull()
|
||||||
|
|
||||||
|
// 已知的无效值:某些设备返回固定值或 null
|
||||||
|
val badValues = setOf("", "9774d56d682e549c", "null", "unknown")
|
||||||
|
val deviceId = if (!androidId.isNullOrBlank() && androidId.lowercase() !in badValues) {
|
||||||
|
"aid_$androidId"
|
||||||
|
} else {
|
||||||
|
java.util.UUID.randomUUID().toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
prefs.edit().putString(key, deviceId).apply()
|
||||||
|
return deviceId
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun platformInitException(platformUrl: String, appKey: String, cause: Throwable): Throwable {
|
private fun platformInitException(platformUrl: String, appKey: String, cause: Throwable): Throwable {
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户