Hola Iñaki:
Formas de leer un identificar unico existen varias. Una de ellas la tienes en tu post sobre el IMEI, aunque el IMEI es un id del teléfono, y no un id del dispositivo.
Una forma podria ser esta (Con este sistema no necesitas permisos en el manifest):
Sub LeerIdDispositivo AsString
Dim p AsPhone
Dim id AsString
Dim r AsReflector
Dim Api AsInt
Api = r.GetStaticField("android.os.Build$VERSION", "SDK_INT")
If Api < 9Then
'dispositivo antiguo
id= p.GetSettings("android_id")
Else
'Nuevo dispositivo
id= r.GetStaticField("android.os.Build", "SERIAL")
If id.ToLowerCase = "unknown"Then id= p.GetSettings("android_id")
EndIf
Return id
End Sub
Puedes hacer una llamada asi:
Log("Leer Id del dispositivo " & LeerIdDispositivo)
También podrias leer como id la dirección MAC de la tarjeta SIM, la dirección MAC es la de la tarjeta de red, claro, que en el caso que sea una tablet que no utilice tarjeta no te valdrá.
También se podria cambiar si el movil es root (y sabes hacerlo), pero si buscamos el id perfecto no lo encontraremos. También con el sistema anterior "podria" darte un id diferente si cambias la ROM. Al final lo que tienes que mirar es si tu id cubre la mayoria de dispositivos “normales” y cual es el fin de ese id.
Dim R AsReflector
R.Target = R.GetContext
R.Target = R.RunMethod2("getSystemService", "wifi", "java.lang.String")
R.Target = R.RunMethod("getConnectionInfo")
Log(R.RunMethod("getMacAddress"))
Este método necesita este permiso:
AddPermission(android.permission.ACCESS_WIFI_STATE)
Saludos