我需要限制应用订阅到一定数量的设备每个用户。为此,我试图为android手机(硬件)获得唯一的标识。我发现下面的选项,但它们都有一定的问题。有没有没有这些问题的解决办法?
发布于 2019-05-25 04:44:24
经过搜索和思考,我想出了下面的解决方案。
MacID可以用作唯一的id。即使在Wifi关闭状态下,MacID也可以使用android.permission.READ_PHONE_STATE获得权限。我已经在几个设备上成功地测试了这些,而且它工作得很好。我的测试正在进行中,不久将在这里更新。
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 "";
}https://stackoverflow.com/questions/56207764
复制相似问题