Android 将mac替换为生成的字符串作为请求者标识符

Android 将mac替换为生成的字符串作为请求者标识符,android,Android,我的应用程序的每个设备都需要一个唯一的字符串。应用程序向服务器发送请求,我需要服务器端的唯一标识符来识别请求者。我以前使用过设备的mac地址,但有人指出,使用mac会导致侵犯隐私。所以我现在决定生成一个字符串,而不是使用mac 你认为呢,我可以用getSessionId()替换get\u mac\u address(),并确保该字符串在数据库中只出现一次吗 代码: private String get_mac_address() { WifiManager wifiManager = (

我的应用程序的每个设备都需要一个唯一的字符串。应用程序向服务器发送请求,我需要服务器端的唯一标识符来识别请求者。我以前使用过设备的mac地址,但有人指出,使用mac会导致侵犯隐私。所以我现在决定生成一个字符串,而不是使用mac

你认为呢,我可以用
getSessionId()
替换
get\u mac\u address()
,并确保该字符串在数据库中只出现一次吗

代码:

private String get_mac_address() {
    WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    WifiInfo wInfo = wifiManager.getConnectionInfo();
    String macAddress = wInfo.getMacAddress();
    return macAddress;
}

 public void getSessionId() {
     SecureRandom random = new SecureRandom();
        sessionId =  new BigInteger(130, random).toString(32);
      }

我建议您访问此页面,获取android开发者博客上的一些信息,该博客用于识别应用程序安装:

下面是使用ANDROID_ID的一部分。请仔细阅读

您还可以组合来自用户和设备的ID,以生成唯一的字符串。它还消除了具有相同设备id的多个用户的可能性

类似于
[SHA1/MD5的用户\u id/用户\u电子邮件]\u[device\u id]


有关此问题的更多详细信息,请浏览以下问题。这肯定会对您有所帮助:

您指的是“用户”还是“设备”?这是一个巨大的差异,你说“用户”,但你目前的方法(MAC地址)实际上是每个“设备”。很多人拥有不止一台设备。不管怎样,看看@Tigger:是的,我指的是设备,而不是用户。谢谢@跳跳虎:我可以在不侵犯隐私的情况下使用这个Android吗?用户是否必须同意此条款?