Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中获得唯一的设备硬件id?_Android - Fatal编程技术网

如何在Android中获得唯一的设备硬件id?

如何在Android中获得唯一的设备硬件id?,android,Android,如何在Android中获取在执行手机重置或操作系统更新时无法更改的唯一设备ID?更新:19-11-2019 下面的答案与今天的情况无关 因此,对于任何寻求答案的人,你都应该查看下面链接的文档 旧答案-现在不相关。 您可以在下面的链接中查看此博客 机器人识别码 import android.provider.Settings.Secure; private String android_id = Secure.getString(getContext().getContentResolve

如何在Android中获取在执行手机重置或操作系统更新时无法更改的唯一设备ID?

更新:19-11-2019

下面的答案与今天的情况无关

因此,对于任何寻求答案的人,你都应该查看下面链接的文档


旧答案-现在不相关。 您可以在下面的链接中查看此博客

机器人识别码

import android.provider.Settings.Secure;

private String android_id = Secure.getString(getContext().getContentResolver(),
                                                    Secure.ANDROID_ID); 
以上内容来自@

更具体地说,是Settings.Secure.ANDROID_ID。这是设备首次启动时生成和存储的64位数量擦除设备时,它会重置

ANDROID\u ID似乎是唯一设备标识符的好选择。有缺点:首先,它在2.2之前的Android版本(“Froyo”)上不是100%可靠的。此外,在一家主要制造商生产的一款流行手机中,至少有一个广为观察到的bug,每个实例都有相同的安卓ID

下面的解决方案不是一个好的解决方案,因为该值在设备擦除(“工厂重置”)后仍然有效,因此,当您的一位客户擦除其设备并将其传递给另一个人时,您可能最终犯下严重错误

您可以使用以下命令获取设备的imei编号

  TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
  telephonyManager.getDeviceId();

添加这是清单

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

请阅读谷歌开发者博客上的官方博客:

结论对于绝大多数应用,要求是 识别特定安装,而不是物理设备。 幸运的是,这样做很简单

有很多很好的理由可以避免尝试识别一个 特定设备。对于那些想尝试的人来说,最好的方法是 可能是在任何相当现代的东西上使用ANDROID_ID 针对遗留设备的一些回退启发式方法


.

我使用以下代码获取Android id

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

Log.d("Android","Android ID : "+android_id);

即使在手机重置或更新后,IMEI是否仍保持不变?手机的IMEI在制造点之后不应更改。我的评论说这不是一个相关的答案,他可能在网上找到了这个解决方案,或者已经实现了,因为stackoverflow本身已经存在很多线程。但他的问题是“唯一的设备ID,不能在手机重置或操作系统更新时更改”@Drc表示同意。说得好。因此,我的答案不是这方面的最佳解决方案case@KiranManiya是的,我明白。我会更新这篇文章。是的,ANDROID_ID很好,但根据文档:这是一个64位的数量,在设备首次启动时生成并存储。擦除设备时会重置。感谢回复。但ANDROID_ID在设备重置时更改。我想要的ID取决于h/w,在操作系统上不会更改。你知道我如何从手机直接获得该ID输出的相同ID吗?(例如,我想获得我刚刚输入的IMEI:*06#)android Id是唯一的吗?@AnixPasBesoin那么相同型号的设备将为您提供相同的值!只需尝试加载测试添加,成功加载后,您将在logcat中看到您的设备ID。