获取Android设备的唯一标识符?

16

我有一部HTC One B型号的安卓手机。我想知道我的设备ID,但我不知道如何找到我的设备ID。


前往 https://dev59.com/V3E85IYBdhLWcg3wbS1h?rq=1。 - M D
这个库提供了每个设备的唯一ID,使用Identity.getDeviceId(context),以及您的应用程序安装的标识符,使用Identity.getInstallationId(context) - caw
3个回答

18

试试这个:

    String deviceId = Secure.getString(this.getContentResolver(),
            Secure.ANDROID_ID);
    Toast.makeText(this, deviceId, Toast.LENGTH_SHORT).show();

android.provider.Settings.Secure.ANDROID_ID

这是一个 64 位的数字(以十六进制字符串表示),在设备第一次启动时随机生成,并应在设备的使用寿命内保持不变。

来源链接:http://blog.vogella.com/2011/04/11/android-unique-identifier/

注意:如果对设备进行了恢复出厂设置,则该值可能会更改。


1
这并不是精确的。这个ID可能会在手机取得root权限或进行“恢复出厂设置”后发生变化。因此,这个ID可以使用,但不要过于依赖它。 - gilonm
1
@user3736827:没有特定的deviceId概念,您需要检查标识您手机的唯一字符串,例如答案中提到的那个,或者您可以使用IMEI号码。 - Siddharth_Vyas
@gilonm:我也编辑了我的答案,并在那一点上添加了注释。 - Siddharth_Vyas
这个ID会在操作系统更新后改变吗? - Hendra Anggrian
@HendraAnggrian:是的 - Siddharth_Vyas
显示剩余4条评论

9

试试这个:

TelephonyManager TM = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

// IMEI No.
String imeiNo = TM.getDeviceId();

// IMSI No.
String imsiNo = TM.getSubscriberId();

// SIM Serial No.
String simSerialNo  = TM.getSimSerialNumber();

// Android Unique ID
String androidId = Settings.Secure.getString(this.getContentResolver(),Settings.Secure.ANDROID_ID);

不要忘记添加 < /p >。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

添加到您的清单文件中。


先生您好,我对答案感到困惑......我只想检查一下我的HTC手机的唯一ID....但是我该如何做呢......每个人都给我提供了链接和代码来检查ID......但我不知道如何实现这一点......请简要告诉我。 - user3736827
无法正常工作,错误信息为“无法解析或不存在字段ANDROID_ID”。 - Shirish Herwade
2
@ShirishHerwade:抱歉,它在Settings.Secure包中。我已经编辑了答案,请您现在尝试一下? - Yash Sampat
1
已经尝试过了,:) 它起作用了。但还是谢谢你的时间。 - Shirish Herwade
我想在您使用“READ_PHONE_STATE”权限时,请确保在运行时向用户请求此权限,因为官方文档将此权限归类为“危险权限”。 - syed dastagir
显示剩余3条评论

1

试试这个:

Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID);

有没有其他方法可以检查手机唯一标识,就像在设置中一样? - user3736827

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接