我想在我的应用程序中获取唯一的设备ID。但根据Google文档所述,Android 10为不可重置的标识符添加了限制。
我不想要随机的ID。我想获取唯一的ID,这样我就可以识别出调用我的API的设备,并通过这样管理我的会话。是否有其他 Android 上的唯一ID,除了Secure.android_id之外?或者有没有办法在Android 10中访问Secure.android_id。
我想在我的应用程序中获取唯一的设备ID。但根据Google文档所述,Android 10为不可重置的标识符添加了限制。
我不想要随机的ID。我想获取唯一的ID,这样我就可以识别出调用我的API的设备,并通过这样管理我的会话。是否有其他 Android 上的唯一ID,除了Secure.android_id之外?或者有没有办法在Android 10中访问Secure.android_id。
public static String getMacAddr() {
StringBuilder res1 = new StringBuilder();
try {
List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface nif : all) {
if (!nif.getName().equalsIgnoreCase("p2p0")) continue;
byte[] macBytes = nif.getHardwareAddress();
if (macBytes == null) {
continue;
}
res1 = new StringBuilder();
for (byte b : macBytes) {
res1.append(String.format("%02X:",b));
}
if (res1.length() > 0) {
res1.deleteCharAt(res1.length() - 1);
}
}
} catch (Exception ex) {
}
return res1.toString();
}
您可以使用以下方式获取设备的Android唯一标识符,但需要获取android.permission.READ_PHONE_STATE权限:
private String android_id = Secure.getString(getContext().getContentResolver(),
Secure.ANDROID_ID);
根据我的想法,您应该使用以下代码来获取唯一的ID -
String uniqueID = UUID.randomUUID().toString();
以上代码不需要用户的任何运行时权限来访问设备ID,并始终生成唯一的ID。您可以将此唯一标识符映射到用户数据或根据需要进行操作。
谢谢