![](/img/trans.png)
[英]Best way to define unique android ID for SDK 29+, device info plus android ID removed/null
[英]Best possible way to get device Id in Android
我只是想知道什么是最好的获取设备 ID 我有 2 个选项或者我使用下面需要运行时权限的代码android.permission.READ_PHONE_STATE
-
private String android_id = Secure.getString(getContext().getContentResolver(),
Secure.ANDROID_ID);
或者
其次,我可以选择不需要任何运行时权限但需要与用户数据(如电子邮件或电话)进行映射以识别的 UUID。
String uniqueID = UUID.randomUUID().toString();
任何建议使用哪个以及为什么将不胜感激。
谢谢
安卓 ID:
在设备首次启动时,会生成并存储一个随机值。 此值可通过 Settings.Secure.ANDROID_ID 获得。 它是一个 64 位数字,应该在设备的生命周期内保持不变。 ANDROID_ID 似乎是唯一设备标识符的不错选择,因为它可用于智能手机和平板电脑。
问题:但是,如果在设备上执行恢复出厂设置,该值可能会更改。 制造商的流行手机也存在一个已知错误,其中每个实例都具有相同的 ANDROID_ID。 显然,该解决方案并非 100% 可靠。
UUID:
由于大多数应用程序的要求是识别特定安装而不是物理设备,因此如果使用 UUID 类,则是为用户获取唯一 ID 的好方法。
问题: UUID.randomUUID() 方法为特定安装生成唯一标识符。 您只需存储该值,您的用户将在您的应用程序下次启动时被识别。 您还可以尝试将此解决方案与 Android 备份服务相关联,以确保用户可以使用这些信息,即使他将您的应用程序安装在另一台设备上。
结论:
在 Android 上识别特定设备并非易事。 有很多很好的理由可以避免这种情况。 最好的解决方案可能是使用 UUID 解决方案来识别特定的安装。 但是,如果您想从物理上绝对识别特定设备,则可以尝试使用 ANDROID_ID 解决方案。 不是 100% 可靠,但比其他解决方案更好。
您可以像这样使用 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;
}
然后看看这里: https : //www.pocketmagic.net/android-unique-device-id/那个伪唯一ID和组合设备ID还不错,也许吧;
ADROID_ID 是获取 android 设备 ID 的最佳方式,它会在恢复出厂设置之前保持不变。
public static String getDeviceId(Context context) {
String id = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.ANDROID_ID);
return id;
}
要获取设备 ID,您可以使用
fun getAndroidId(context: Context): String {
val androidId =
Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID)
return androidId
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.