ich möchte in meiner App gerade die Funktion implementieren, dass ein Android-Gerät eindeutig
identifiziert werden kann. Ich habe mich jetzt für die Mac-Adresse entschieden. Leider
liefert die Methode dafür auf dem Emulator "null" zurück und auf meinem Handy (4.0.3)
stürzt sie dabei komplett ab.
Folgender Code:
Aufruf in der MainActivity:
1public void calculateDeviceRating() {
2 int devID;
3 WifiManager man = (WifiManager) getSystemService(Context.WIFI_SERVICE);
4 WifiInfo wi = man.getConnectionInfo();
5
6 DeviceRatingObject devR = new DeviceRatingObject();
7 devR.fillObject(wi);
8
9 ...
10 }
2 int devID;
3 WifiManager man = (WifiManager) getSystemService(Context.WIFI_SERVICE);
4 WifiInfo wi = man.getConnectionInfo();
5
6 DeviceRatingObject devR = new DeviceRatingObject();
7 devR.fillObject(wi);
8
9 ...
10 }
Zielmethode ( in Klasse DeviceRatingObject)
1private int getEncodedMAC(WifiInfo wi){
2 int result;
3 String mac = wi.getMacAddress();
4 // // Beim Emulator mac ist hier bereits null. Auf dem Handy stürzt es wohl an dieser Stelle ab, denke ich.
5 if (mac == null || mac == "") {
6 mac = "000000000000";
7 }
8 result = encodeMAC(mac);
9 devID = result;
10 return result;
11 }
2 int result;
3 String mac = wi.getMacAddress();
4 // // Beim Emulator mac ist hier bereits null. Auf dem Handy stürzt es wohl an dieser Stelle ab, denke ich.
5 if (mac == null || mac == "") {
6 mac = "000000000000";
7 }
8 result = encodeMAC(mac);
9 devID = result;
10 return result;
11 }
Die benötigte Permission "ACCESS_WIFI_STATE" ist gesetzt.
Hat jemand eine Idee?
PS: Anfangs wollte ich die IMEI für die Identifikation benutzen, habe davon aber wieder abgelassen,
da hiermit meiner Meinung nach erstens mehr Schindluder betrieben werden kann, und zweitens
weil einfache Tablets über keine IMEI verfügen.
