java - 如何在android java中获取设备唯一ID?作为 2020 年的 Google 法律
问题描述
我已经阅读了文档,并且知道 IMEI、Android ID、SECURE ID 等现在有限制。然后我在我的应用程序中使用 UUID 作为唯一 ID,但问题是在清除存储或数据时,存储在 sharedpreferences 中的 UUID 也被删除并获得不同的 UUID。请帮助我并建议我获取 android 唯一设备 ID。
解决方案
在设备首次启动时,会生成并存储一个随机值。该值可通过 Settings.Secure.ANDROID_ID 获得。它是一个 64 位数字,在设备的整个生命周期内应该保持不变。ANDROID_ID 似乎是唯一设备标识符的不错选择,因为它可用于智能手机和平板电脑。要检索该值,您可以使用以下命令
import android.provider.Settings.Secure;
private String android_id = Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID);
//Secure ID V 10
val secureId = Secure.getString(getContentResolver(), Secure.ANDROID_ID)
//UUID
private static String uniqueID = null;
private static final String PREF_UNIQUE_ID = "PREF_UNIQUE_ID";public synchronized static String id(Context context) {
if (uniqueID == null) {
SharedPreferences sharedPrefs = context.getSharedPreferences(
PREF_UNIQUE_ID, Context.MODE_PRIVATE);
uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
if (uniqueID == null) {
uniqueID = UUID.randomUUID().toString();
Editor editor = sharedPrefs.edit();
editor.putString(PREF_UNIQUE_ID, uniqueID);
editor.commit();
}
}
return uniqueID;
}
推荐阅读
- html - 我应该在我的.vimrc 中添加什么,当我使用vim 创建一个html 文件时,创建的*.html 文件默认显示...?
- c++ - 从 Json 读取和保存数据
- batch-file - xcopy - 带有排除文件的循环复制错误
- c# - RichTextBox 将表格添加到 CaretPosition
- bash - git remote fetch origin 已经添加到 .git/config 文件中,仍然需要在 git bash 中每次设置“remote.origin.fetch”,然后再执行“git fetch”
- ios - 循环引用,Obj-C -> Swift,Swift -> Obj-C
- sendgrid - 允许回复 sendgrid 发送的地址的动态本地部分
- android - Android WebView - 不能从 WebView 下载文件
- c# - DirectorySearcher:如何仅获取“真实”用户的条目
- c# - 抛出的异常未在 UnitTest try/catch 中捕获