[英]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.