我需要将应用程序订阅限制为每个用户一定数量的设备。为此,我试图获取Android手机的唯一ID(硬件)。我发现以下选项,但所有选项都有某些问题。有没有解决这些问题的解决方案?
答案 0 :(得分:0)
经过仔细考虑,我提出了以下解决方案。
MacID可以用作唯一ID。即使Wifi处于关闭状态,也可以使用权限android.permission.READ_PHONE_STATE
获得MacID。我已经在少数设备中成功测试了这些设备,并且工作正常。我的测试正在进行中,很快会在这里更新。
public static String getDeviceMacId(){
try {
List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface nif : all) {
if (!nif.getName().equalsIgnoreCase("wlan0")) continue;
byte[] macBytes = nif.getHardwareAddress();
if (macBytes == null) {
return "";
}
StringBuilder res1 = new StringBuilder();
for (byte b : macBytes) {
res1.append(String.format("%02X:",b));
}
if (res1.length() > 0) {
res1.deleteCharAt(res1.length() - 1);
}
return res1.toString();
}
} catch (Exception ex) {
//handle exception
}
return "";
}