繁体   English   中英

如何在我的 android 应用程序中获取设备唯一 ID?

[英]How to get Device unique Id in my android application?

android.telephony.TelephonyManager.getDeviceId()在迁移到API level 29 (Android 10) 后不起作用,因为它抛出SecurityException 请任何人都可以帮助我获得唯一的设备 ID。

根据 Android 10 中的最新版本,对不可重置设备标识符的限制。 PPS 必须具有READ_PRIVILEGED_PHONE_STATE特权才能访问设备的不可重置标识符,其中包括IMEI序列号

"READ_PRIVILEGE_PHONE_STATE"只能被访问 最佳实践建议您应该“避免使用硬件标识符”。 用于唯一标识符。 您可以使用来自 firebase 的实例 ID,例如FirebaseInstanceId.getInstance().getId(); .

或者你也可以用这个,

String deviceId = android.provider.Settings.Secure.getString(
                    context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

使用以下代码:

 public String androidId;

 androidId = String
                .format("%16s", Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID))
                .replace(' ', '0');

您可以在下面使用它,这是最好的,它具有最少的重置机会。

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

请参考 这个,从中你可以决定更喜欢的一个。

getDeviceId 已弃用,您可以使用此方法获取设备 IMEI

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        IMEINumber = telephonyMgr.getImei();
    } else {
        IMEINumber = telephonyMgr.getDeviceId();
    }

在清单中设置此权限:

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

现在使用它来获得唯一的编号:

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

如果您的项目包含 firebase。 使用这个 --> FirebaseInstanceId.getInstance().getToken()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM